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

来源:互联网 发布:linux root登陆 编辑:程序博客网 时间:2024/06/06 05:57

1.使用service的风险:

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

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

2.当界面不可以见时释放内存:
这里写图片描述
3当内存紧张时释放内存:
这里写图片描述
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更好

6这里写图片描述

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

7这里写图片描述

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

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

因为运行时注解都是使用反射实现的,并且反射的一些对象在内存中存在,很久才会释放,还是老老实实findviewbyid吧
这里写图片描述

9代码混淆
这里写图片描述
使用方法:

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

10.
这里写图片描述

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

0 0