正好前段时间在做应用的性能优化,了解到了一些工具,学习了一些优化的方法,性能优化是一个持续的过程,需要不断地钻研,经过前段时间的优化,应用内存下去了不少,帧率也提高了很多,内存泄露基本解决了。
下面是优化过程中的一些总结,希望对你有所帮助。
先说优化经验:
优化过程中拿数据说话,不要凭感觉,感觉哪有问题就去优化哪,这样有可能起不到作用,甚至有反作用;
利用好各种工具,将性能问题显性化,方便快读定位问题;
性能优化是一个持续的过程,要保持耐心,这个过程不是一蹴而就的事情,有可能等你对代码的理解足够深入之后,发现之前的优化只是很小的一部分,或者根本不科学;
多看yutube上Android Perfomance Patterns的视频,还有网络上优秀的性能优化文档,有些知识点或者技巧,有可能你看一遍没啥印象,但当你偶然使用这些技巧或者方法后,你再去看视频会有顿悟的感觉;
Android的官方指南真的很值得阅读,很多所谓的技巧其实在官方文档中都会有提及;
性能优化的主要指标有:FPS(帧率,体现应用的流畅度)、内存消耗、APP的稳定性、耗电等。
测试应用的启动时间
adb shell am start -W packagename/activity,eg:adb shell am start -W com.tencent.mm/.ui.LauncherUI,显示的结果中,thisTime和totalTime的含义分别为:
thisTime: just current activity launched time
**totalTime:**the activity you started may be on the bottom of activity stack. So it refers to the total time from activity searching to current activity launched. inal long thisTime = curTime - displayStartTime; final long totalTime = stack.mLaunchStartTime != 0? (curTime - stack.mLaunchStartTime) : thisTime;
实时显示程序的内存消耗
讯飞Android应用性能测试工具:[iTest]
Android Studio—>Android Monitor—>Memory/CPU|GPU通过观测程序运行过程中的内存状态可以粗略地检测到哪些界面存在内存泄漏、哪些地方存在内存抖动(内存抖动时可能触发GC,导致程序出现卡顿的现象)、优化效果等。
FPS查看工具
FpsService,一个实时查看帧率的工具,需要集成到代码中才能使用。
内存泄漏查询工具
leakcanary,这个需要集成到代码中才能正常使用,Github上也有Eclipse的版本。当在操作程序的过程中有内存泄漏时会弹出内存泄漏详细的通知信息,在使用这个工具的时候程序会存在卡顿的现象,因为这个工具就是通过触发系统GC来检测哪些对象没有释放确认是否有内存泄漏的,java并没有严格意义的内存泄漏,只是某些对象持有的时间太长导致了系统的内存不能够立即释放,导致运存不足。关于Leakcanry的参考资料可以看看:LeakCanary 中文使用说明、LeakCanary: 让内存泄露无所遁形
静态代码质量检测工具
Android Studio—>Analyze—>Inspect Code通过静态代码质量检测工具可以删掉工程中无用的资源文件、发现潜在的内存泄漏问题、明显的代码问题、简化代码等等。
检测应用耗时工具
性能测试移动端工具
讯飞Android应用性能测试工具:iTest
腾讯开发的GT
Android 5.0原生系统设置中的开发者模式,里面内置了一系列的性能测试工具,可以在程序运行的过程中测试各界面显示的效率、布局的性能问题、内存问题、ANR等问题。
还没有使用过的性能测试工具
性能优化的参考资料