简单聊下Android性能优化与内存优化的问题
来源:互联网 发布:沈阳网络代运营 编辑:程序博客网 时间:2024/06/05 21:31
写代码需要知道几点,要学会从中寻找简单的方法:
1.不做没必要的工作;
2.尽量避免内存分配;
3.能抽取的尽量抽取
下面来先说下性能优化:
性能一般会出现在开机启动时,ui卡顿和稳定性,内存问题,耗电问题等。关于ui卡顿这是用户最直接看到的最明了的同时也是最重要的。
UI中卡顿一般就是布局过于复杂渲染过度,绘制时间过长,运行时异常等。所以要解决卡顿就要从中找出解决的方法:1.避免创建没必要的对象,
对象创建永远不会是免费的。
每个线程的分代
GC
给零时对象分配一个地址池以降低分配开
销,但往往内存分配比不分配需要的代价大。
因为对象创建永远不会是免费的。每个线程的分代GC给零时对象分配一个地址池以降低分配开销,但往往内存分配比不分配需要的代价大;对象创建永远不会是免费的。
每个线程的分代
GC
给零时对象分配一个地址池以降低分配开
销,但往往内存分配比不分配需要的代价大。
2.尽量使用静态代替虚拟; 3.对常量使用Static Final修饰符,尽量使用改进的for循环;
内存虚漏这个虽说很多但遇见的也不是太多,估计还是时间问题,遇到的错误太少了,看了一点别人说的,该问题目前在项目中一般用leakcanary基本就能搞定,配置起来也相当简单:
build.gradle:dependencies{debugCompilecom.squareup.leakcanary:leakcanary-android:1.3.1//or1.4-beta1releaseCompilecom.squareup.leakcanary:leakcanary-android-no-op:1.3.1//or1.4-beta1testCompilecom.squareup.leakcanary:leakcanary-android-no-op:1.3.1//or1.4-beta1}
java代码:java:publicclassExampleApplicationextendsApplication{@OverridepublicvoidonCreate(){super.onCreate();LeakCanary.install(this);}}
一旦泄漏就会发送一个通知点开可看到泄露的对象以及引用路径
再简单说下内存优化:
内存优化大家应该听说或者见的比较多了,最常见的也就是oom异常了,那么导致oom异常的原因是什么呢:
最要原因在于内存泄漏和内存超限,内存泄漏主要是程序中存在对无用对象的引用,导致GC无法回收;内存超限制则是保存了多个耗用内存过大的对象,图片最为主要。
简单说几个方法: 1.对常量使用Static Final修饰符
2.对象不使用时尽量设置为null
3.尽量不要牵一发而动千军
4.尽量除去没必要的代码
5.尽量使用application的context
最重要的就是Bitmap的加载了,尽量的压图片并且及时回收释放内存
还有就是listview的优化了想必大家对这个都很了解了我就不一一列举说了
摘去写好的代码实践:
1. 节制地使用Service
2. 当界面不可见时释放内存
3. 当内存紧张时释放内存
4. 避免在Bitmap上浪费内存
对大图片,先获取图片的大小信息,根据实际需要展示大小计算inSampleSize,最后decode;
5. 使用优化过的数据集合
6. 谨慎使用抽象编程
7. 尽量避免使用依赖注入框架
很多依赖注入框架是基于反射的原理,虽然可以让代码看起来简洁,但是是有碍性能的。
8. 谨慎使用external libraries
9. 优化整体性能
10. 使用ProGuard来剔除不需要的代码
android{buildTypes{release{minifyEnabledtrueshrinkResourcestrueproguardFilesgetDefaultProguardFile(proguard-android.txt),src/main/proguard-project.txtsigningConfigsigningConfigs.debug}}11. 慎用异常,异常对性能不利
希望大家有什么好的方式可以继续补充,为大家方便观看
- 简单聊下Android性能优化与内存优化的问题
- Android Studio下的应用性能优化总结-内存优化
- Android Studio下的应用性能优化总结-内存优化
- Android Studio下的应用性能优化总结-内存优化
- Android Studio下的应用性能优化总结-内存优化
- Android内存与性能优化
- Android性能优化:谈谈Bitmap的内存管理与优化
- Android性能优化:谈谈Bitmap的内存管理与优化
- android 内存优化 性能优化
- android 内存优化 性能优化 .
- Android 性能优化、内存优化
- Android 性能优化、内存优化
- Android 性能优化、内存优化
- Android-性能优化-内存优化
- Android性能优化-----内存优化
- Android性能优化-内存泄漏(下)
- 内存性能优化问题
- Android 性能、内存优化
- *[Lintcode]Next Permutation
- 微软命令行设定/取消定时关机
- 用正确的方式,从导航堆栈中删除 viewcontrollers
- 自己动手写RTP服务器——用RTP协议传输TS流
- String.getBytes()& JAVA编码转换的详细过程
- 简单聊下Android性能优化与内存优化的问题
- 从最大似然到EM算法浅解
- Fragment.setArguments()的初衷
- 加入收藏的代码
- 1028 C++ 泛型编程
- 为什么很多年轻人总会感到迷茫
- gradle与jenkins编译常见报错及解决
- Python爬虫:Xpath语法笔记【转载】
- quartz定时器corn表达式怎么写