Instant Run 23事

来源:互联网 发布:怎么看淘宝成交价格 编辑:程序博客网 时间:2024/04/30 01:38

Android Studio功能非常强大,在各个功能性方面都要优于Eclipse,唯独在速度方面被吐糟得比较惨。因此在Android Studio 2.0中,对速度方面进行了大幅度的改进:于是在Android Studio 2.0中加入了Instant Run功能。

传统情况下,我们修改程序后重新运行一次程序需要经历 代码重新编译 -> 停止程序 -> 重新安装 -> 重新启动 这样一个过程,而Instant Run则尝试只将程序变更的部分部署到手机上,尽量避免重新安装或重新启动程序,以此大大提升调试程序的效率。

当我们第一次运行程序之后,Android Studio中的运行按钮会变成这个样子:运行的三角形旁边多了一个闪电符号,这就说明现在可以使用Instant Run了。

nstant Run主要分为三种类型,hot swap、warm swap和cold swap。下面将通过插画形式进行区分:


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

虽然在享受着新技术的同时,但也给我们带来了一些困扰,比如:首次启动程序白屏时间过长的问题

这个问题是在升级了Android Studio 2.0之后,当时Android Studio的版本是从1.5直接升级到了2.0,一个如此大版本的跨跃说明改动肯定是比较大的。

分析原因:

一开始将这个原因归结于是Android Studio 2.0的bug,毕竟一次性做了这么大的升级,有点bug也是很正常的。但是直到现在最新的Android Studio 2.2版本也还存在。然而后面发现是和我们使用的gradle插件版本有关系,打开build.gradle文件查看:

buildscript {    repositories {        jcenter()    }    dependencies {        classpath 'com.android.tools.build:gradle:2.1.2'     }}当然的版本下是会出现长时间白屏现象的,但是当gradle版本降低后,就提示gradle插件是不支持Instant Run的,让升级到2.1.2。

但同时你会发现,长时间白屏的问题不见了。

解决问题:1、降低gradle插件的编译版本

2、Google已经为我们考虑到了,在release版本中是不会出现长时间白屏现象的

具体优化:

如果你的观察力非常敏锐的话,应该能发现其实我们的程序还是会经历一个白屏的阶段,只不过非常短,瞬间就跳过了。

这个就和Instant Run无关了,这是由于在启动的时候程序都要进行一些基本的初始化操作,所有程序都是要经历这个过程的。

虽说这个白屏时间很短,并没有什么太大的影响,不过我们还是可以通过代码来进一步优化的。修改styles.xml中主题相关的代码,如下所示:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">    ......    <item name="android:windowIsTranslucent">true</item>    <item name="android:windowNoTitle">true</item></style>
虽然白屏界面看不到了,但是由于初始化的过程中窗口是透明的,会让用户感觉程序启动的响应速度稍微慢了点,然后这种影响是毫秒级别的。不用担心。
最后感谢以下资源
【传送门】

http://mp.weixin.qq.com/s?__biz=MzA5MzI3NjE2MA==&mid=2650236250&idx=1&sn=b8ff283fe65f2e344cec02f54a6cdb68&scene=0#wechat_redirect


http://mp.weixin.qq.com/s?__biz=MzA5MzI3NjE2MA==&mid=2650236001&idx=1&sn=f2ac9a45ebe0d59fa11d9599ad7cca50&scene=21#wechat_redirect

1 0