99热99这里只有精品6国产,亚洲中文字幕在线天天更新,在线观看亚洲精品国产福利片 ,久久久久综合网

歡迎加入QQ討論群258996829
麥子學(xué)院 頭像
蘋果6袋
6
麥子學(xué)院

Android的啟動(dòng)如何優(yōu)化?

發(fā)布時(shí)間:2017-07-27 11:02  回復(fù):0  查看:2210   最后回復(fù):2017-07-27 11:02  
本文和大家分享的主要是android 啟動(dòng)優(yōu)化相關(guān)內(nèi)容,一起來看看吧,希望對(duì)大家 學(xué)習(xí)android開發(fā)有所幫助。
   應(yīng)用的啟動(dòng)方式
  ·  冷啟動(dòng)
  ·  當(dāng)啟動(dòng)應(yīng)用時(shí),后臺(tái)沒有該應(yīng)用的進(jìn)程,這時(shí)系統(tǒng)會(huì)重新創(chuàng)建一個(gè)新的進(jìn)程分配給該應(yīng)用。
  ·  系統(tǒng)會(huì)先創(chuàng)建和初始化 Application 類,再創(chuàng)建和初始化 LauncherActivity 類(包括一系列的測(cè)量、布局、繪制),最后顯示在界面上。
  ·  熱啟動(dòng)
  ·  當(dāng)啟動(dòng)應(yīng)用時(shí),后臺(tái)已有該應(yīng)用的進(jìn)程(例:按 back 鍵、 home 鍵),應(yīng)用雖然會(huì)退出,但是該應(yīng)用的進(jìn)程是依然會(huì)保留在后臺(tái),可進(jìn)入任務(wù)列表查看,所以在已有進(jìn)程的情況下,這種啟動(dòng)會(huì)從已有的進(jìn)程中來啟動(dòng)應(yīng)用。
  ·  熱啟動(dòng)因?yàn)闀?huì)從已有的進(jìn)程中來啟動(dòng),所以熱啟動(dòng)就不會(huì)走 Application 這步了,而是直接進(jìn)入 Activity 。
   冷啟動(dòng)的啟動(dòng)過程分析
  當(dāng)點(diǎn)擊app 的啟動(dòng)圖標(biāo)時(shí),安卓系統(tǒng)會(huì)從 Zygote 進(jìn)程中創(chuàng)建出一個(gè)新的進(jìn)程分配給該應(yīng)用,之后會(huì)依次創(chuàng)建和初始化 Application 類、創(chuàng)建 LauncherActivity 類、加載主題樣式中的 windowBackground 等屬性設(shè)置給 LauncherActivity ,然后配置 Activity 層級(jí)上的一些屬性、再加載布局顯示。
  應(yīng)用的啟動(dòng)流程如下:Application 的構(gòu)造器方法 ——>attachBaseContext()——>onCreate()——>Activity 的構(gòu)造方法 ——>onCreate()——> 配置主題中背景等屬性 ——>onStart()——>onResume()——> 測(cè)量布局繪制顯示在界面上
   冷啟動(dòng)過程中的白屏問題
  當(dāng)用戶點(diǎn)擊圖標(biāo)啟動(dòng)應(yīng)用到應(yīng)用首界面顯示,有時(shí)候會(huì)出現(xiàn)一段白屏或黑屏?xí)r間。原因大致有兩方面:其一,在Application Activity onCreate 方法中,加載資源耗時(shí)較長。其二,頁面布局相對(duì)復(fù)雜,渲染畫面花費(fèi)較長時(shí)間。
   白屏的解決辦法
  · 資源加載
  ·  首先盡量避免將耗時(shí)操作直接寫在 Application onCreate() 中,可以采用異步或者 IntentService 的方式加載資源。
  ·  不要以靜態(tài)變量的方式在 Application 中保存數(shù)據(jù)
  · 畫面渲染
  ·  為啟動(dòng)的 Activity 自定義一個(gè) Theme ,指定一個(gè)閃屏畫面相同的背景圖片
 <style name="AppSplash">
  <item name="android:windowBackground">@mipmap/splash_bg</item>
</style>
  ·  將新的 Theme 應(yīng)用到設(shè)置到 AndroidManifest.xml LauncherActivity
  <activity android:name=".MainActivity"
  android:theme="@style/AppWelcom">
  <intent-filter>
      <action android:name="android.intent.action.MAIN" />
      <category android:name="android.intent.category.LAUNCHER" />
  </intent-filter>
</activity>
  · MainActivity 中需要設(shè)置回原來的 Theme
  public  class  MainActivity  extends  AppCompatActivity {
  @Override
   protected void onCreate(Bundle savedInstanceState) {
  setTheme(R.style.AppTheme);
   super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  }
  }
 
來源:簡書
您還未登錄,請(qǐng)先登錄

熱門帖子

最新帖子

?