Android Studio新功能解析,你真的了解Instant Run吗?(2)


可以看到,这里我给第二个Button添加了一个新的点击事件方法,添加一个方法是满足cold swap条件的,那么我们明显可以看出,应用程序重新启动了,但是整体的速度依然很快,整个重新运行的过程在5秒种之内完成的,我的截图都是实时速度,没有进行加速播放。

Full APK

除了满足以上条件的其他程序变更,Instant Run目前都还不支持,主要包括以下一些情况:

改变AndroidManifest.xml文件的内容

改变被AndroidManifest.xml文件所引用的资源,比如string.xml中的app_name

改变桌面widget的UI相关元素

当程序变更不被Instant Run所支持时,就会执行完整的APK安装过程,同时Android Studio会给出这样的提示:

Android Studio新功能解析,你真的了解Instant Run吗?


由于这种情况重新运行时间比较长,就不给大家截图演示了,以前我们使用低于2.0版本的Android Studio开发时,每次都是执行的这种情况。

当然,这只是目前的Instant Run规则,Android Studio团队还会一直进行优化,增加hot swap和warm swap的条件,减少cold swap和full apk的条件,相信未来的Android Studio会更加好用。

Rerun

尽管Instant Run尽可能地想要变得更智能,但是它也没有时光倒流的能力。比如hot swap或者warm swap是根本不会重启程序的,而如果你修改了一些只有在程序启动的时候才会初始化的代码,那么Instant Run对此也是无能为力的,因为修改的代码根本就没有执行到。

针对这种情况,Android Studio专门提供了一个Rerun按钮:

中间那个按钮就是Rerun按钮,使用这个按钮来重新运行程序,应用程序会被强制重启,从而初始化的一些代码就能够执行到了。Android Studio无法得知改动的代码是不是在程序初始化的时候才执行的,而我们却可以知道,所以确保你理解了Rerun这个按钮的作用,并在恰当的时机使用它。

补充

hot swap由于其工作原理的限制还有一些特殊问题。hot swap会在应用程序的内部开启一个服务器,然后由Android Studio自动计算出方法内实现的变更,将变更代码发送到服务器,服务器再利用类加载器和委托机制将新的代码实现注入到现有应用程序中,从而完成替换工作。

但是整个过程中,新的代码实现并没有被保存到本地,也就是说一旦设备和Android Studio的连接断掉了(比如拔掉数据线),我们使用hot swap替换的代码也就随之不见了。当你再次打开程序的时候,你会看到这样的提示:

Android Studio新功能解析,你真的了解Instant Run吗?


看到这个提示并不用感到惊奇,这就说明你的hot swap代码失效了,现在的程序仍然使用的老的代码。遇到这种情况只需要将手机连上电脑,然后在Android Studio中重新运行一下程序就可以解决了。另外只有在debug模式下才可能会出现这个提示,release模式下是不可能出现的,所以不用担心这个提示会让用户感到困惑。

更多Android Studio相关内容可以看看以下的有用链接: 

Ubuntu 15.04下安装Android Studio   

Android Studio 2.0中的模拟器已提速50倍 

Ubuntu 12.04(64位)安装Android Studio 全过程  

Android Studio使用教程  

Ubuntu 14.10 环境下安装使用Android Studio

Android Studio开发指南

Android Studio设置主题 和 不支持中文的问题解决方法  

Android Studio 下载安装以及不能打开的解决办法  

Android Studio安装使用图文教程  

Android Studio 的详细介绍请点这里
Android Studio 的下载地址请点这里 

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/056d00011d28c522a2cade9fbc343c30.html