Android学习笔记-Android初级 (三)android内存管理技巧

1.使用service的风险:

注意:
1.当任务正在执行的时候才运行service
2.在停止service的时候 要小心停止失败造成的内存泄露
3.不要让service在后台一直运行,用完了一定要停止

解决方法:
官方推荐使用Intenservice 特点:任务执行完后自动停止

2.当界面不可以见时释放内存:

3当内存紧张时释放内存:
Android学习笔记-Android初级 (三)android内存管理技巧_第1张图片
4避免在Bitmap上浪费内存
5使用优化过的数据集合

//性能较低的集合
        HashMap<Integer, String> hm = new HashMap<Integer, String>();
        hm.put(1, "11");
        //性能更高的集合
        SparseArray<String> array = new SparseArray<String>();
        array.put(1, "1"); 
hashMap(矩阵方式存储),SpaseArray更好

6Android学习笔记-Android初级 (三)android内存管理技巧_第2张图片

(2)内部类可以使用static静态内部类
(3)减少new (可以拿出来,提升成成员(也叫:全局)变量)
(4)使用SparseArray

7Android学习笔记-Android初级 (三)android内存管理技巧_第3张图片

为什么在服务器编程推崇抽象编程,因为服务器端牺牲内存来提高可扩展性是值得的。
android中一切以性能丶高效为宗旨,不要滥用抽象编程,比如用List list = new ArrayList();
可以直接使用ArrayList list = new ArrayList(); 不要再转一下,不好扩展就不好扩展吧。

8避免使用依赖注入(运行时注解)框架

因为运行时注解都是使用反射实现的,并且反射的一些对象在内存中存在,很久才会释放,还是老老实实findviewbyid吧
Android学习笔记-Android初级 (三)android内存管理技巧_第4张图片

9代码混淆
Android学习笔记-Android初级 (三)android内存管理技巧_第5张图片
使用方法:

1.在F:\Android\sdk1\tools\proguard\中把proguard-android.txt拷贝出来
2.F:\GitHubList\Android_Vitamio\app放在项目的这个文件夹中
Android学习笔记-Android初级 (三)android内存管理技巧_第6张图片
3.打开app文件夹中build.gradle文件找到buildTypes改为true(就代表下面引入的两个文件生效了)
Android学习笔记-Android初级 (三)android内存管理技巧_第7张图片
4.修改proguard-android.txt文件配置相关的混淆内容,生成的app就是一个混淆过的app(反编译之后就会显示a,aa,bbb,c,a,c,b混淆过的类了,并且占的内存也比较小)

10.
Android学习笔记-Android初级 (三)android内存管理技巧_第8张图片

好处:不占用当前进程的内存,多个进程就多份内存

你可能感兴趣的:(android)