Android学习笔记-Android初级 (三)android内存管理技巧
2016-02-02 15:13
211 查看
1.使用service的风险:
注意:
1.当任务正在执行的时候才运行service
2.在停止service的时候 要小心停止失败造成的内存泄露
3.不要让service在后台一直运行,用完了一定要停止
解决方法:
官方推荐使用Intenservice 特点:任务执行完后自动停止
2.当界面不可以见时释放内存:
![](http://img.blog.csdn.net/20160202145700089)
3当内存紧张时释放内存:
![](http://img.blog.csdn.net/20160202145831310)
4避免在Bitmap上浪费内存
5使用优化过的数据集合
6
![](http://img.blog.csdn.net/20160202150030313)
(2)内部类可以使用static静态内部类
(3)减少new (可以拿出来,提升成成员(也叫:全局)变量)
(4)使用SparseArray
7
![](http://img.blog.csdn.net/20160202150210108)
为什么在服务器编程推崇抽象编程,因为服务器端牺牲内存来提高可扩展性是值得的。
android中一切以性能丶高效为宗旨,不要滥用抽象编程,比如用List list = new ArrayList();
可以直接使用ArrayList list = new ArrayList(); 不要再转一下,不好扩展就不好扩展吧。
8避免使用依赖注入(运行时注解)框架
因为运行时注解都是使用反射实现的,并且反射的一些对象在内存中存在,很久才会释放,还是老老实实findviewbyid吧
![](http://img.blog.csdn.net/20160202150537022)
9代码混淆
![](http://img.blog.csdn.net/20160202150625351)
使用方法:
1.在F:\Android\sdk1\tools\proguard\中把proguard-android.txt拷贝出来
2.F:\GitHubList\Android_Vitamio\app放在项目的这个文件夹中
![](http://img.blog.csdn.net/20160202150844141)
3.打开app文件夹中build.gradle文件找到buildTypes改为true(就代表下面引入的两个文件生效了)
![](http://img.blog.csdn.net/20160202150947392)
4.修改proguard-android.txt文件配置相关的混淆内容,生成的app就是一个混淆过的app(反编译之后就会显示a,aa,bbb,c,a,c,b混淆过的类了,并且占的内存也比较小)
10.
![](http://img.blog.csdn.net/20160202151102311)
好处:不占用当前进程的内存,多个进程就多份内存
注意:
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.
好处:不占用当前进程的内存,多个进程就多份内存
相关文章推荐
- Android SDK Manager设置代理服务器和端口
- 自己定义android 4.0以上的对话框风格
- Android自动生成代码工具整理
- Android手机反编译方法
- Android中枚举enum的使用
- Android获取debug签名和release签名方法
- Android studio的加速
- Android中设置用户的头像
- Android实现滑动刻度尺效果,选择身高体重和生日
- Android实现SQLite数据库联系人列表
- Android学习笔记-Android初级 (二)
- Android 混淆打包及混淆后运行错误
- 【转载】Android开发学习笔记:Intent的简介以及属性的详解
- Android Studio实现代码混淆
- Android studio 代码混淆和破解apk
- Android LayoutInflater的inflate布局文件收获
- 避免Android中Context引起的内存泄露
- Android中的Drawable
- Android中各种Span的用法
- Android学习笔记-Android初级 (一)