android 在某些应用界面锁屏解锁后概率性黑屏5S后才显示界面

难点:
1、 概率问题本地难以复现,只能通过提供的log来分析
2、 干扰信息多,无法确定问题原因是锁屏状态还是第三方应用
3、 黑屏问题的调试分析难度大

分析思路:

此问题影响量产,因此集中人力攻关,大部分人的意见偏向于是锁屏解锁状态错乱导致的问题,但是通过log和视频来看,问题发生在锁屏解锁后,windowsManager已经切换到第三方应用的Activity界面,但是Activity在走了onResume后很快的走到了onPause,并且onPause失败,因此我偏向于是第三方应用引起的问题

但是因为framework中windowsManager和ActivityManager的log都是关闭的,因此关键的activity切换和报错信息没有打印出来,打开log的话,会影响性能,因此不能再正式版本上打开log调试,只能自己本地编译版本,刷机后,自行复现,抓log查看

最后,本地复现抓取log,发现每次问题发生时,在解锁后会启动一个无界面的Activity(com.igexin.sdk.GActivity),这个Activity会导致windowManager切换超时,在代码中超时等待时间正好是5S,5S后会启动正常的界面

后来发现这个Activity是某些第三方应用,用于应用消息推送的进程保活,会在某些条件下自启动,造成上述问题

解决办法:
1、 在fwk中的Activity.java > startActivity,判断intent是这个Activity则取消启动
2、 在SystemUI的开机广播中,禁用掉这个activity,只要开机则不允许这个activity启动
PackageManager mPm = mContext.getPackageManager();
ComponentName mComponentName = new ComponentName(“com.android.browser”,”com.igexin.sdk.GActivity”);
mPm.setComponentEnabledSetting(mComponentName,PackageManager.COMPONENT_ENABLED_STATE_DISABLED,PackageManager.DONT_KILL_APP);

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值