Android冷啟動時間優化

jopen 8年前發布 | 11K 次閱讀 Android開發 移動開發

</p>

原文出處:http://blog.waynell.com/android/2015/11/17/android-cold-start.html 

冷啟動時間是指當用戶點擊你的app那一刻到系統調用Activity.onCreate()之間的時間段。在這個時間段內,WindowManager會先加載app主題樣式中的windowBackground做為app的預覽元素,然后再真正去加載activity的layout布局

冷啟動時間優化

知道了Android冷啟動時間的原理之后,就可以通過一些小技巧來對冷啟動時間進行優化,從而讓你app加載變得”快“一些(視覺體驗上的快)。我們可制作一個啟動Activity的背景樣式的.9圖片,然后把這個.9圖片做為windowBackground。

</p>

這里推薦使用 MaterialColdStart 這個庫來制作我們.9圖片。

  • 首先git clone https://github.com/DreaminginCodeZH/MaterialColdStart

    </li>

  • 由于該庫中引用了子模塊 AndroidSVGScripts, 所以我們需要把該子模塊也update下來,否則無法運行。但是作者定義該子模塊的時候使用了ssh協議,所以會導致我們無法update,這里我們要先修改.gitmodules文件將里面所有的git@github.com:改為https://github.com/就可以了,然后執行git submodule initgit submodule update命令就可在把子模塊update下來了

    </li>

  • 在生成.9圖片之前,我們還需要根據自己的項目修改生成.9圖片的配置文件,打開colors.conf文件,可以配置statusbar、actionbar、background的顏色等,修改raw-xxx目錄下的window_background_statusbar_toolbar_tab.9.shsvg.conf文件可以配置statusbar、actionbar的高度等

    </li>

  • 最后執行./gen-png.sh命令,就可以在gen目錄下生成我們所需的.9圖片了

    </li> </ul>

    圖片制作好之后,我們就可以用它做為app冷啟動階段的預覽元素,如下設置:

    • 為啟動的Activity自定義一個Theme

      <style name="AppTheme.Launcher">
          <item name="android:windowBackground">@drawable/window_background_statusbar_toolbar_tab</item>
      </style>
      </li>

    • 將新的Theme應用到設置到AndroidManifest.xml

      <activity
          android:name=".MainActivity"
          android:theme="@style/AppTheme.Launcher">

          <intent-filter>         <action android:name="android.intent.action.MAIN" />         <category android:name="android.intent.category.LAUNCHER" />     </intent-filter> </activity></pre></li>

    • 由于給MainActivity設置了一個新的Theme,這樣做會覆蓋原來的Theme,所以在MainActivity中需要設置回原來的Theme

      </li> </ul>

      public class MainActivity extends AppCompatActivity {

          @Override     protected void onCreate(Bundle savedInstanceState) {

              // Make sure this line comes before calling super.onCreate().         setTheme(R.style.AppTheme);

              super.onCreate(savedInstanceState);     } }</pre>

      效果預覽

      第一張是啟用了冷啟動優化,第二張是沒有啟用冷啟動優化

      cold start

      cold start


 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!