Android--冷启动

启动方式

通常来说,启动方式分为两种:冷启动和热启动。

  • 冷启动:当启动应用时,后台没有该应用的进程,这时系统会重新创建一个新的进程分配给该应用,这个启动方式就是冷启动。
  • 热启动:当启动应用时,后台已有该应用的进程(例:按back键、home键,应用虽然会退出,但是该应用的进程是依然会保留在后台,可进入任务列表查看),所以在已有进程的情况下,这种启动会从已有的进程中来启动应用,这个方式叫热启动。

冷启动过程中的白屏黑屏

android studio升级 2.0之后 加上Instant Run,Instant Run为了能够让我们快速部署代码,背后其实是有一套非常复杂的逻辑的,比如要在APK中建立服务器与Android Studio进行通信,以及代码差异比对和替换等,在研发过程中可能出现白屏问题。

而Instant Run是用来提升开发效率的,也就是说,只有在开发阶段才会有Instant Run这个东西,在正式的产品中是完全不存在Instant Run的,如果我们打上签名,release版的程序是不会出现这种现象的。

尽管release版本没有Instant Run,也仍然会有短暂的白屏,这个就和Instant Run无关了,这是由于在启动的时候程序都要进行一些基本的初始化操作,所有程序都是要经历这个过程的。

如果不想看到白屏,我们可以在styles.xml中改下属性:

<item name="android:windowIsTranslucent">true</item>
<item name="android:windowNoTitle">true</item> 

如此我们就不会遇见白屏了。

冷启动优化

冷启动时间是指当用户点击你的app那一刻到系统调用Activity.onCreate()之间的时间段。在这个时间段内,WindowManager会先加载app主题样式中的windowBackground做为app的预览元素,然后再真正去加载activity的layout布局。

就算没有白屏,要等一段时间才能进入Activity,所以我们可以对冷启动的时间做一下“手脚”,我们可制作一个启动Activity的背景样式的.9图片,然后把这个.9图片做为windowBackground。

  • 为启动的Activity自定义一个Theme
<style name="MyTheme" parent="Theme.AppCompat.Light.NoActionBar">
   <item name="android:windowBackground">@drawable/image</item></style>
  • 然后将新的Theme应用到设置到AndroidManifest.xml中
  • 由于给MainActivity设置了一个新的Theme,这样做会覆盖原来的Theme,所以在MainActivity中需要设置回原来的Theme
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        setTheme(R.style.AppTheme);
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

    }
}

结束语:本文仅用来学习记录,参考查阅。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值