Android5.0L因SystemUI ANR导致的黑屏问题分析

本文详细分析了Android 5.0.2 L在FOTA重启后出现的黑屏问题,问题源于开机初始化相机参数时的线程调度错误,导致SystemUI ANR,进而影响StatusBar、NavigationBar和墙纸显示。解决方案包括修正代码处理顺序,避免死锁。大部分问题出现在FOTA升级后,因启动流程中的特定条件触发。
摘要由CSDN通过智能技术生成


一、问题现象

1、用户直观看到的现象是黑屏。

2、出问题时StatusBar、NavigationBar和墙纸消失。

3、大部分发生在FOTA重启之后,出现概率很低。


Platform:MSM8916

Android版本:5.0.2L

BuildType:user

系统软件版本:VA6V+L5V0

系统RAM:1GB


参考机行为:

1、5.0L的Nexus4和5.1L的Nexus5都没有重现此问题


二、解决方案

通过初步分析、深入分析(具体分析过程、关键代码log下面会附上)我们清楚的知道了问题发生的原因:

1、开机初始化的过程中需要获取camera的相关参数,获取的过程中会以api级别打开camera(用户不可见的形式打开)然后快速关闭

2、在打开的过程中会开启一个Thermal deamon 线程进行thermal相关的处理,然后关闭时会等待这个thermal deamon线程退出

3、这个线程开启的时候会通过异步的方式执行一次thermal相关的处理,并等待结果返回, 执行的方式是多线程异步处理

在当前代码的执行状态下有一定概率(很小,只有开机或者重启时走这个流程)出现因为调度原因而先执行了closecamera的操作并先删除了异步处理结果的链表,然后等待thermal  deamon线程退出,从而导致thermal deamon被唤醒时异步处理结果的链表已经被删除而出现死结。一旦死结产生,

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值