天天看點

Instant Run 23事

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。下面将通過插畫形式進行區分:

Instant Run 23事

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

雖然在享受着新技術的同時,但也給我們帶來了一些困擾,比如:首次啟動程式白屏時間過長的問題

這個問題是在更新了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