问题:使用其他应用后再切换回微信应用时微信打开的动画卡顿一下
UI 线程获取contentprovider ,这个时候不存在进入sleep
getProvider 会通过AMS 启动对应应用,应用启动发布contentProvider 唤醒UI 线程
通过上面可以看到是在UI 线程获取不存在的contentProvider ,而冷启动应用publish 导致卡顿丢帧。
接下来看下contentProvider 创建应用过程:
1、getContentProvider 唤醒ActivityManager
2、ActivityManager Start proc: com.xxx socket 唤醒zygote
这里zygote64 runnable 42ms
3、zygote65 socket 返回pid ,唤醒ActivityManager
4、 主线程里面创建必要的线程
5、执行PostFork 和 ZygoteInit
再到ActivityThread.main
1、Zygote runnable 时间42ms 太长
2、UI 线程优化获取contentProvider 逻辑或者contentProvider 获取时不是冷启动应用发布而是使用一种不耗时方式发布。