您的位置:首页 > 移动开发 > Android开发

Android 性能优化总结和汇总

2016-12-02 16:16 239 查看
对于Android开发者而言,开发出一个应用程序已经不是很难的问题。但是,如果要想开发出优质的应用或者程序就需要知道如何优化应用以及对程序性能优化的一些知识。那么如何去优化程序呢?安卓框架已经提供了很好的工具来帮助开发者做这件事情。废话少说,进入正题。


A.StrictMode

Android StrictMode意思为严格模式,是用来检测程序中违例情况的开发者工具。最常用的场景就是检测主线程中本地磁盘和网络读写等耗时的操作。

StrictMode原理:

其实StrictMode实现原理也比较简单,以IO操作为例,主要是通过在open,read,write,close时进行监控。libcore.io.BlockGuardOs文件就是监控的地方。

如何使用

**
onCreate(){
StrictMode.setThreadPolicy(newStrictMode.ThreadPolicy.Builder()
.detectAll().build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
.detectAll().build());
...
}
**


在Activity, Application的onCreate中添加上述方法,即可。

严格模式主要检测两大问题,一个是线程策略,即TreadPolicy,另一个是VM策略,即VmPolicy。

ThreadPolicy 线程策略检测的内容:

自定义的耗时调用  detectCustomSlowCalls()

磁盘读取操作    detectDiskReads()

磁盘写入操作    detectDiskWrites()

网络操作      detectNetwork()

VmPolicy 虚拟机策略检测的内容有

Activity泄露 使用detectActivityLeaks()开启

未关闭的Closable对象泄露 使用detectLeakedClosableObjects()开启

泄露的Sqlite对象 使用detectLeakedSqlLiteObjects()开启

检测实例数量 使用setClassInstanceLimit()开启

B.Debug工具

在需要开始跟踪的地方加入 Debug.startMethodTracing(“file path”);

最终在停止调试的地方加入 Debug.stopMethodTracing();

最终在sdcard上生成的debug文件我们可以用sdk/tools中的traceview来查看运行的结果。

但是,这两个只是Debug中的两个方法,还有其他很多方法可以从源码中看到,例如:

**
...
int getThreadGcInvocationCount()
void resetThreadGcInvocationCount()
void resetAllCounts()
...
**


上述两种方法,直接可以写在代码中作为程序性能的监控,如果你要看更直观的一些性能信息可以通过DDMS工具的monitor进行数据的实时监控。至于使用什么样的方式,我觉得可以根据实际情况而定。如果后续发现还有其他的优化方式,我会继续备注。

网络优化

网络优化主要体现在设备和服务器之间的信息交互的过程,由于网络情况的不确定性,性能开销和网络请求的时间过长的情况。我们需要尽可能要减少网络交互的次数。那么,怎么样去合理利用网络请求呢?

1.分优先级,延迟部分请求。

2.合并请求,如果两次请求的数据可以通过一次请求拿到,那么就可以合并处理。

3.本地缓存数据,来减少网络请求。

4.减小请求数据的大小,适当的进行压缩。

推荐链接:

Google 优化笔记1

Google优化笔记2

Google优化笔记3

Google优化笔记4
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息