Android应用性能优化之启动优化

首先说开发中最明显的启动时“黑白屏”的问题并提供解决方案。“黑白屏”就是点击应用图标在启动过程中黑屏或者白屏一两秒的问题。

   方案1(推荐,qq貌似就是这种启动方案,不过在启动优化的其他方面处理的好,时间更短了,文末会说启动过程。其他优化以后整理好了再写,先解决问题。)
   1、在styles.xml中写一个SplashTheme,完整代码如下:
       <style name="SplashTheme" parent="AppTheme">
      <item name="android:windowFullscreen">true</item>
     <item name="android:windowIsTranslucent">true</item>
     </style>
    2、在manifest的启动activity加入该主题,下面附启动activity的完整声明:
      <activity
        android:name=".ui.account.SplashActivity"
        android:configChanges="orientation|keyboardHidden"
        android:screenOrientation="portrait"
        android:theme="@style/SplashTheme"  //这一行是关键代码>
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

结束,就这么简单。下面解释一下为什么这么写,看源码的话会发现“黑白屏”问题的根源是windowBackground,我们这里设置windowBackground是透明的 true就解决了,这种方法的启动时间是几百毫秒,而且启动背景透明,用户几乎体验不到。
这里提供Android studio查看启动时间的方法:通过关键字 Displayed 并筛选为 No Filters

方案2(闪屏图片放在主题中):
1、在drawable中建资源文件:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <bitmap android:src="@mipmap/app_theme_bg"
            android:gravity="fill"/>
    </item>
</layer-list>

2、在styles.xml中写一个SplashTheme(同方案1),完整代码如下:

   <style name="SplashTheme" parent="AppTheme">
      <item name="android:windowFullscreen">true</item>
     <item name="android:windowBackground">@drawable/app_theme_bg</item>
  </style>

结束。下面说一下方案二的优缺点:
优点:
1、连几百毫秒的透明启动页没有,直接出现启动图。
缺点:
1、主题用图片和SplashActivity的就重复了,主题的图片根据不同的机型会拉伸,从主题到SplashActivity会很突兀。
2、主题用图片一些机型的底部会有裁剪,比如底部有文字说明,很多大公司的app都有裁剪的情况。

系统启动步骤(来源:https://juejin.im/post/5cc19374e51d456e781f2036):
首先拿到一部 Android 系统的手机打开电源,引导芯片代码加载引导程序 BootLoader 到 RAM 中去执行。
BootLoader 把操作系统拉起来。
Linux 内核启动开始系统设置,找到一个 init.rc 文件启动初始化进程。
init 进程初始化和启动属性服务,之后开启 Zygote 进程。
Zygote 开始创建 JVM 并注册 JNI 方法,开启 SystemServer。
启动 Binder 线程池和 SystemServiceManager,并启动各种服务。
在这里插入图片图片来源描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值