Android性能优化——黑白屏问题

App启动流程

1、系统

开机–>[引导程序BootLoader->负责拉起操作系统]–>linux,init.rc–>init进程pid=1–>zygote[孵化器,创建虚拟机JVM]–>启动进程间通讯的工具SystemServer[打开binder线程池,SystemServiceManeger]–>开启各种服务ActivitymanegerService,CameraService,WindowManegaer–>启动Launch

  • 打开电源,引导芯片加载BootLoader
  • BootLoader拉起操作系统
  • Linux找到init.rc开始初始化进程,init进程pid=1
  • zygote[孵化器]创建虚拟机,启动SystemServer
  • 启动Binder线程池,开启SystemServiceManager,开启各种服务ActivitymanegerService,CameraService,WindowManegaer
  • 开启各种服务ActivitymanegerService启动Luncher

applicqation开启

startActivity把信息告诉系统,然后系统打开孵化器,孵化器把信息传入创建ActivityThread main(),再然后传入Application main();onCreate();–>Activity onCreate();

我们所能改动的是Application main()–>Activity onCreate();这中间的过程

白屏、黑屏

原因

黑白屏生成原因–>App打开过程中Application到Activity之间有一段加载的空白时间。而这段时间之内如果设置了windowsBackground颜色白色的,就为白屏,没设置的则为黑屏

<!--白屏-->
<style name="AppTheme" parent="Base.Theme.AppCompat.Light.DarkActionBar">
  <item name="colorPrimary">@color/colorPrimary</item>
  <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
  <item name="colorAccent">@color/colorAccent</item>
</style>

//这一段是导致白屏的代码,点击他的parent链接到他的上一层,一直点
<style name="Platform.AppCompat.Light" parent="android:Theme.Holo.Light">      
  ...
  <item name="android:windowBackground">@color/background_material_light</item>
  ...
</style>
//通过这段代码可以看到默认窗口背景颜色是白色,所以呈现为白屏

<!--黑屏-->
<style name="AppTheme" parent="android:Theme">
  <item name="colorPrimary">@color/colorPrimary</item>
  <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
  <item name="colorAccent">@color/colorAccent</item>
</style>

 <style name="Theme">
    ...
    <item name="windowBackground">@drawable/screen_background_selector_dark</item>
    ...
</style>
//溯源代码可以看到窗口背景颜色为黑色,所以呈现为黑屏
解决
  • 三种

    开启显示背景颜色

    <!--窗口背景颜色,此处不允许直接赋值如 #FFFFFF,必须在color中定义使用-->
    <item name="android:windowBackground">@color/colorAccent</item>
    

    设置透明,所以没有白屏或黑屏

    <!--设置背景透明-->
    <item name="android:windowIsTranslucent">true</item>
    

    禁用窗口的预览动画

    <item name="android:windowDisablePreview">true</item>
    

Logcat 输入Display筛选系统日志[fliter选择no fliter]

  • 性能分析adb命令
    查看页面启动时间
    adb shell am start -W com.mediatek.camera/com.android.camera.CameraActivity
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值