Android优化之其他优化(1)

Android优化之其他优化(1),第1张

概述其他优化1.静态变量优化尽量不使用静态变量保存核心数据。这是为什么呢?这是因为android的进程并不是安全的,包括application对象以及静态变量在内的进程级别变量并不会一直呆着内存里面,因为它很有会被kill掉。当被kill掉之后,实际上app不会重新开始启动。Android系统会 其他优化

1 .静态变量优化

尽量不使用静态变量保存核心数据。这是为什么呢?

这是因为androID的进程并不是安全的,包括application对象以及静态变量在内的进程级别变量并不会一直呆着内存里面,因为它很有会被kill掉。当被kill掉之后,实际上app不会重新开始启动。AndroID系统会创建一个新的Application对象,然后启动上次用户离开时的activity以造成这个app从来没有被kill掉的假象。而这时候静态变量等数据由于进程已经被杀死而被初始化,所以就有了不推荐在静态变量(包括Application中保存全局数据静态数据)的观点。

2 注解替代枚举

使用注解限定传入类型

比如,尤其是写第三方开源库,对于有些暴露给开发者的方法,需要限定传入类型是有必要的。
举个例子: 刚开始的代码

/** * 设置播放器类型,必须设置 * 注意:感谢某人建议,这里限定了传入值类型 * 输入值:111   或者  222 * @param playerType IjkPlayer or MediaPlayer. */public voID setPlayerType(int playerType) {    mPlayerType = playerType;}

优化后的代码,有效避免第一种方式开发者传入值错误

/** * 设置播放器类型,必须设置 * 注意:感谢某人建议,这里限定了传入值类型 * 输入值:ConstantKeys.IjkPlayerType.TYPE_IJK   或者  ConstantKeys.IjkPlayerType.TYPE_NATIVE * @param playerType IjkPlayer or MediaPlayer. */public voID setPlayerType(@ConstantKeys.PlayerType int playerType) {    mPlayerType = playerType;}/** * 通过注解限定类型 * TYPE_IJK                 IjkPlayer,基于IjkPlayer封装播放器 * TYPE_NATIVE              MediaPlayer,基于原生自带的播放器控件 */@Retention(RetentionPolicy.soURCE)public @interface IjkPlayerType {    int TYPE_IJK = 111;    int TYPE_NATIVE = 222;}@IntDef({IjkPlayerType.TYPE_IJK,IjkPlayerType.TYPE_NATIVE})public @interface PlayerType{}

使用注解替代枚举,代码如下所示

@Retention(RetentionPolicy.soURCE)public @interface VIEwStateType {    int HAVE_DATA = 1;    int EMPTY_DATA = 2;    int ERROR_DATA = 3;    int ERROR_NETWORK = 4;}

3. 多渠道打包优化

还在手动打包吗?尝试一下python自动化打包吧……

瓦力多渠道打包的Python脚本测试工具,通过该自动化脚本,自需要run一下或者命令行运行脚本即可实现美团瓦力多渠道打包,打包速度很快。配置信息十分简单,代码中已经注释十分详细。可以自定义输出文件路径,可以修改多渠道配置信息,简单实用。
项目地址:github.com/yangchong21…

4.TrimMemory和LowMemory优化

可以优化什么?
在onTrimMemory() 回调中,应该在一些状态下清理掉不重要的内存资源。对于这些缓存,只要是读进内存内的都算,例如最常见的图片缓存、文件缓存等。拿图片缓存来说,市场上,常规的图片加载库,一般而言都是三级缓存,所以在内存吃紧的时候,我们就应该优先清理掉这部分图片缓存,毕竟图片是吃内存大户,而且再次回来的时候,虽然内存中的资源被回收掉了,依然可以从磁盘或者网络上恢复它。大概的思路如下所示
在lowMemory的时候,调用GlIDe.cleanMemory()清理掉所有的内存缓存。
在App被置换到后台的时候,调用GlIDe.cleanMemory()清理掉所有的内存缓存。
在其它情况的onTrimMemory()回调中,直接调用GlIDe.trimMemory()方法来交给GlIDe处理内存情况。 总结

以上是内存溢出为你收集整理的Android优化之其他优化(1)全部内容,希望文章能够帮你解决Android优化之其他优化(1)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1103528.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-28
下一篇2022-05-28

发表评论

登录后才能评论

评论列表(0条)

    保存