赞
踩
开机动画执行完毕后,车机屏幕黑屏了十秒左右才进入launcher。
查看问题发生时间点,以及对应log相关信息:
屏幕背光无问题:
power mode切换正常:
power mode切换有3种状态:0、1、2;0代表息屏,1代表进入doze模式(当然,车机一般是没有doze模式的),2代表亮屏。
12-03 20:10:16.446 1134 1134 D SurfaceFlinger: Setting power mode 2 on display 4625716335649126655
开机动画执行完成:
12-03 20:10:19.075 1490 1539 I wm_boot_animation_done: 21909
常见的我们都分析完了,当然,还有个跟power相关的,这里已经从log里面看了,power模块没有问题。
接下来我们看看其他异常点:
fallbackhome多次启动,开机动画大概是20:10:19s这个时间段完成的
- 12-03 20:10:17.256 1492 1492 I ActivityTaskManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10000100 cmp=com.android.car.settings/.FallbackHome (has extras)} from uid 0
-
- 12-03 20:10:18.496 1492 1519 I ActivityTaskManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10000100 cmp=com.android.car.settings/.FallbackHome (has extras)} from uid 0
-
- 12-03 20:10:18.995 1492 2324 I ActivityTaskManager: START u10 {act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10000100 cmp=com.android.car.settings/.FallbackHome (has extras)} from uid 0
-
- 12-03 20:10:20.640 1492 1620 I ActivityTaskManager: START u10 {act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10000100 cmp=com.android.car.settings/.FallbackHome (has extras)} from uid 0
-
- 12-03 20:10:21.033 1492 1535 I ActivityTaskManager: START u10 {act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10000100 cmp=com.android.car.settings/.FallbackHome (has extras)} from uid 0
fallbackhome这个window被冻结了,并且被冻住了大概十秒左右,恰好黑屏的时间也是10s左右:
- 12-03 20:10:20.660 1492 1620 I WindowManager: Screen frozen for +104ms due to ActivityRecord{471aa34 u10 com.android.car.settings/.FallbackHome} t1000001 f}}
-
- 12-03 20:10:30.414 1492 1536 I WindowManager: Screen frozen for +9s600ms due to Window{f2cf6ec u10 com.android.car.settings/com.android.car.settings.FallbackHome}
我们来看看为什么fallbackhome这个Activity多次启动:
从log里面看是因为configChange发生改变导致fallbackhome多次启动,那么是哪些config change改变导致生命周期异常而去重新启动Activity呢?从log里面可以看出是uiMode、density、locale发生改变,至于怎么看出来的可以根据log去源码中寻找。
要想configChange改变不影响生命周期在对应的AndroidManifest.xml配置即可:
/packages/apps/Car/Settings/AndroidManifest.xml
在configChanges标签里面加上 uiMode、density、locale这几个配置就行,还可以加上touchScreen,防止触摸事件传递给这个Activity影响生命周期。
至于为什么会引起fallbackhome冻屏,没有从log里面看出有效信息,可以打开相应的log开关来看流程,一般发生冻屏是因为在主线程做了耗时操作。注意:冻屏不一定会引起黑屏!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。