车载终端开机黑屏调查

前言

在讲述开机黑屏问题前,我们先了解一个概念

1. "直接启动"模式

是什么?
当设备已开机但用户尚未解锁设备时,Android 7.0 将在安全的“直接启动”模式下运行。为支持此模式,系统为数据提供了两个存储位置:

  • 凭据加密存储,这是默认存储位置,仅在用户解锁设备后可用。
  • 设备加密存储,该存储位置在“直接启动”模式下和用户解锁设备后均可使用。
    默认情况下,应用不会在“直接启动”模式下运行。如果您的应用需要在“直接启动”模式下执行操作,您可以注册应在此模式下运行的应用组件。需要在“直接启动”模式下运行的一些常见应用用例包括:
  • 已安排通知的应用,如闹钟应用。
  • 提供重要用户通知的应用,如短信应用。
  • 提供无障碍服务的应用,如 Talkback。
    如果应用在“直接启动”模式下运行时需要访问数据,请使用设备加密存储。设备加密存储包含使用密钥加密的数据,该密钥只有在设备成功执行启动时验证后才可用。
    对于应使用与用户凭据(如 PIN 码或密码)关联的密钥加密的数据,请使用凭据加密存储。凭据加密存储仅在用户成功解锁设备后可用,直到用户再次重启设备。如果用户在解锁设备后启用锁定屏幕,则不会锁定凭据加密存储。

问题描述

开机动画结束时,在进入Launcher之前有一段黑屏的时间,很影响用户体验.

问题分析

// 系统进入用户空间,标志着kernel启动完成
01-04 03:25:17.959  root   455   455 I boot_progress_start: 5670
// Zygote启动
01-04 03:25:18.744  root   455   455 I boot_progress_preload_start: 6456

// Zygote结束
01-04 03:25:20.256  root   455   455 I boot_progress_preload_end: 7968

// SystemServer ready,开始启动Android系统服务,如PMS,APMS等
01-04 03:25:20.491  1000   720   720 I boot_progress_system_run: 8203

// PMS开始扫描安装的应用
05-31 10:24:20.476  1000   720   720 I boot_progress_pms_start: 9981

// PMS先行扫描/system目录下的安装包
05-31 10:24:20.834  1000   720   720 I boot_progress_pms_system_scan_start: 10339

// PMS扫描/data目录下的安装包
05-31 10:24:21.722  1000   720   720 I boot_progress_pms_data_scan_start: 11227

// PMS扫描结束
05-31 10:24:21.729  1000   720   720 I boot_progress_pms_scan_end: 11234

// PMS就绪
05-31 10:24:22.091  1000   720   720 I boot_progress_pms_ready: 11596

// AMS就绪
05-31 10:24:23.948  1000   720   720 I boot_progress_ams_ready: 13452

--------------------------------------------------------------------------
// AMS启动完成后开始激活屏幕,从此以后屏幕才能响应用户的触摸
05-31 10:24:25.022  1000   720  1049 I boot_progress_enable_screen: 14526

----------------------------------需要优化下开机动画的衔接------------------------------------------
// 设置service.bootanim.exit属性值为1,标志系统要结束开机动画了,可以用来跟踪开机动画结尾部分消耗的时间
05-31 10:24:31.830  1000   642  1122 I sf_stop_bootanim: 19535

// 开机动画结束,这一步用户能直观感受到开机结束
05-31 10:24:31.832  1000   720  1104 I wm_boot_animation_done: 19537


-------------------------------------------------------------------------


// fallbackhome 拉起
05-31 10:24:24.904  1000  1910  1910 I am_on_resume_called: [0,com.android.settings.FallbackHome,LAUNCH_ACTIVITY]

黑10s................


-------------------------这个activity 启动耗时太长了,需要Launcher去解决-------------------------------------
// Launcher activity 创建
05-31 10:24:32.912  1000   720   746 I am_create_activity: [0,149459167,49,com.qinggan.app.launcher/.activity.HomeActivity,android.intent.action.MAIN,NULL,NULL,268435712]

// Launcher onCreate---> onResume
05-31 10:24:34.579  1000  2892  2892 I am_on_resume_called: [0,com.qinggan.app.launcher.activity.HomeActivity,LAUNCH_ACTIVITY]

// 这个速度确实有点慢
05-31 10:24:38.366  1000   720  1104 I am_activity_launch_time: [0,149459167,com.qinggan.app.launcher/.activity.HomeActivity,5431,5431]

解决方案

  1. 按照正常的逻辑推理,我们理论上可以让Launcher提前显示出来,盖住之前的黑屏,但试验结果是不可行的,Launcher依赖的很多模块并没有ready,强行拉起会引起其他问题.
    目前采用方案
  2. 延迟开机动画盖住黑的时间,Launcher启用windowDisablePreview
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值