2018-12-27-app启动
- 测试启动时间(原理) adb shell am start -W [PackageName]/[PackageName.MainActivity] adb shell am start -W com.chongdingdahui.app/com.chongdingdahui.app.main2.ui.activity.Main2Activity
Status: ok Activity: com.chongdingdahui.app/.main2.ui.activity.Main2Activity ThisTime: 6875 TotalTime: 6875 WaitTime: 6904 Complete
Activity: jeep.jniLearn/.MainActivity ThisTime: 753 TotalTime: 753 WaitTime: 780 Complete
- 启动速度影响因素
1) apk大小,影响apk加载速度 2) MainActivity界面 3) App和MainActivity的init时间 4) Application初始化
- 流程:(不是很严谨) Application的构造器方法——>attachBaseContext()——>onCreate()——> Activity的构造方法——>onCreate()——>配置主题中背景等属性——>测量、布局、绘制显示在界面上——>onStart()——>onResume()。
-
调查方法 TraceView,
-
View.post 进行延迟加载.
-
TraceView 测量常见方法的耗时(SharedPreferences等)
-
界面影响
-
使用ViewStub的方式,减少UI一次性绘制的压力
- 工具 http://www.open-open.com/lib/view/open1452488209370.html
* GPU Profile:查看每一帧的绘制情况。除了查看帧率,我还会用这个工具检查各个界面在静默状态下的不必要的刷新问题。
Show GPU Overdraw:查看过渡绘制用的工具,因为手淘的很多界面效果也比较复杂,很容易出现过渡绘制。
Dump View Hierarchy:用于查看界面的布局、View和层级嵌套情况。特别是在没有源代码的情况下,查看非常方便。
TraceView:强大的性能跟踪工具,也是我们在优化中用的最多的工具。
SysTrace:主要用于查看UI的绘制问题,跟踪CPU执行情况等。
Trace OpenGL:可以录制每一帧的绘制过程,逐个绘制命令查看。
AlloCation Tracker:内存分配跟踪,也是个调试性能的强大工具。
Threads 工具可以显示所有线程信息及查看线程正在执行的代码。
Heap和Memory Monitor:查看内存的分配和变化情况。Memory Monitor还可以查看内存的抖动和GC情况。
-
文档 https://developer.android.com/topic/performance/vitals/launch-time
- Inspect CPU activity with CPU Profiler. https://developer.android.com/studio/profile/cpu-profiler
- Android vitals with Google Play
如何重做一个 android? 了解 熟悉10个android相关项目源码 Dagger
- 使用工具 https://www.jianshu.com/p/0d2a582aa7d3