开关机动画流程

本文档介绍了如何解决开关机动画加载时黑屏时间过长的问题。主要分析了MediaServer初始化延迟与Camera Sensor搜索耗时的影响,并提供了解决方案,包括检查和优化Backup Camera Sensor数量、调整初始化操作到子线程以及针对BootAnimation的优化,以缩短黑屏时间。
摘要由CSDN通过智能技术生成

技术分享

问题:开关机动画加载黑屏时间过长解决方法

[SOLUTION]
在开机过程,由于加入开机铃声,在播放动画前需要等待 MediaServer 初始化完成, MediaServer 的初始化
可能由于 audio 或者 camera 初始化过慢导致黑屏问题,目前遇到大多都是配置 camera
多,导致 camera 初始化阶段 search
backup sensor 太
camera sensor 耗时太长。
1. 首先对于开机 kernel logo 到动画黑屏的问题,可以通过加入开机铃声和去掉开机铃声对比测试,确定黑屏
是否和加入开机铃声相关。
2. 如果是因为加入开机铃声黑屏,从开机 log 来 check 黑屏的原因,从开机的 main_log.boot 搜索关键字“
bootanimation ”, check 如下两句 log 的间隔时间:
BootAnimation: enter threadLoop()
BootAnimation: [BootAnimation threadLoop 674]bexist=0,nMp3Exist=-
1,pSoundFileName=/system/media/bootaudio.mp3,pBackupSoundFileName=/data/lo
cal/bootaudio.mp3 (这一句 log 的每个变量的值可能具体 Log 有些不一样)
如果这对应的两行 log 的时间间隔比较长,基本可以确定是和 MediaServer 初始化时间过长有关。
3. 进一步确定 MediaServer Init 比较慢是否和 Camera 有关, check 如下的 log :
在main_log.boot这份log中,搜索CameraService started 这个关键词去看camera service 启动的时间点   
CameraService(   105): CameraService started (pid=105)
接下来在 main_log.boot 搜索关键字 “ ImgSensorDrv ”, check camera search sensor 的时间
:
ImgSensorDrv: [getInstance][ImgSensorDrv] getInstance
ImgSensorDrv: [impSearchSensor]Warning(  168):SENSOR search [0]0x5645 /
[1]0x5ea1 start
ImgSensorDrv: [impSearchSensor]SENSOR search end:
如果 ImgSensorDrv start 到 end 的时间和步骤 2 bootanimation 等待 MediaServer 初始化的时间差
不多,且开始结束时间也对应,可以确定黑屏是和 Camera Search Sensor 太多有关
4. 接下来,可以进一步 check Project 配置的 Backup Camera Sensor 是不是太多,如果 Backup
Sensor 过多,可以通过去掉多余的 Camera Sensor 进一步验证。
另外还可以通过将 camera service init 时 search

Android 开机动画的加载流程如下: 1. 开机自检:开机后,首先进行硬件自检。如果自检通过,将会启动 bootloader。 2. Bootloader:Bootloader 负责初始化硬件设备,加载 kernel,并且将 kernel 加载到内存中。 3. KernelKernelAndroid 操作系统的核心,负责初始化硬件设备,启动驱动程序,加载文件系统等。 4. Init 进程:Init 进程是 Android 系统中的第一个用户进程,它负责启动系统中所有的服务,并且加载所有的配置文件和属性。 5. SurfaceFlinger:SurfaceFlinger 是 Android 系统中用于显示图形的核心服务,它在启动后会创建一个显示屏幕,显示屏幕上的内容就是从应用程序中传递过来的。 6. Zygote 进程:Zygote 进程是 Android 系统中的一个特殊进程,它负责预加载常用的类和资源,以提高应用程序的启动速度。当应用程序需要启动时,Zygote 进程会 fork 出一个新的进程,该进程会继承 Zygote 进程的状态,从而加速应用程序的启动。 7. 开机动画:在上述进程启动后,系统会加载开机动画开机动画通常是一个视频或者一组图片,这些图片或视频会被 SurfaceFlinger 显示在屏幕上。 8. 启动屏幕:当开机动画结束后,系统会显示一个启动屏幕,表示 Android 系统已经启动完毕。此时,用户就可以开始使用 Android 设备了。 总的来说,Android 开机动画加载流程比较复杂,其中涉及到多个进程和服务,需要相互配合才能完成整个过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值