简单聊下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. 慎用异常,异常对性能不利


希望大家有什么好的方式可以继续补充,为大家方便观看

0 0
原创粉丝点击