RK6.0 在项目上做了个开机向导,开机向导结束后启动launcher,会出现一段时间黑屏问题,下面是解决办法很受用。感谢!
转载:
https://blog.csdn.net/dpppppp/article/details/81941550
现象:
系统第一次开机启动,进入桌面前黑屏10秒.
log信息:
01-21 09:30:26.806 575 1695 I ActivityManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10000000 cmp=com.android.provision/.DefaultActivity} from uid 0 on display 0
01-21 09:30:26.824 575 1695 I ActivityManager: Start proc 2471:com.android.provision/u0a29 for activity com.android.provision/.DefaultActivity
01-21 09:30:36.802 575 629 W ActivityManager: Launch timeout has expired, giving up wake lock!
01-21 09:30:36.852 575 1177 I ActivityManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.HOME]
1
2
3
4
5
启动超时:ActivityManager: Launch timeout has expired, giving up wake lock!,这与services/core/java/com/android/server/am/ActivityManagerService.java中的PROC_START_TIMEOUT一致。
// How long we wait for a launched process to attach to the activity manager
// before we decide it's never going to come up for real.
static final int PROC_START_TIMEOUT = 10*1000;
解决方法:
方法1.在系统第一次启动时,一般都会有设置向导,完成设置后才能启动进入桌面。如果没有设置向导,可以修改系统设置的默认值:
frameworks/base/packages/SettingsProvider/res/values/defaults.xml
true
<bool name="def_device_provisioned">true</bool>
1
2
3
4
5
再在产品mk中去掉这两个app:
packages/apps/OneTimeInitializer
packages/apps/Provision
1
2
让系统直接启动桌面,不用启动Provision。Provision干的事情和SetupWizard、OneTimeInitializer类似。都是设置DEVICE_PROVISIONED和USER_SETUP_COMPLETE。
方法2.修改桌面启动器intent-filter的优先级: