亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Android App應(yīng)用啟動(dòng)分析與優(yōu)化

 更新時(shí)間:2016年07月21日 12:03:01   投稿:lijiao  
這篇文章主要針對(duì)Android App應(yīng)用啟動(dòng)的分析與優(yōu)化為大家進(jìn)行詳細(xì)介紹,感興趣的小伙伴們可以參考一下

app的啟動(dòng)方式:
 1.)冷啟動(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)用,這個(gè)啟動(dòng)方式就是冷啟動(dòng)。冷啟動(dòng)因?yàn)橄到y(tǒng)會(huì)重新創(chuàng)建一個(gè)新的進(jìn)程分配給它,所以會(huì)先創(chuàng)建和初始化Application類,再創(chuàng)建和初始化MainActivity類(包括一系列的測量、布局、繪制),最后顯示在界面上。
 2.)熱啟動(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)用,這個(gè)方式叫熱啟動(dòng)。熱啟動(dòng)因?yàn)闀?huì)從已有的進(jìn)程中來啟動(dòng),所以熱啟動(dòng)就不會(huì)走Application這步了,而是直接走M(jìn)ainActivity(包括一系列的測量、布局、繪制),所以熱啟動(dòng)的過程只需要?jiǎng)?chuàng)建和初始化一個(gè)MainActivity就行了,而不必創(chuàng)建和初始化Application,因?yàn)橐粋€(gè)應(yīng)用從新進(jìn)程的創(chuàng)建到進(jìn)程的銷毀,Application只會(huì)初始化一次。 

app的啟動(dòng)流程: 
通過上面的兩種啟動(dòng)方式可以看出app啟動(dòng)流程為: 
Application的構(gòu)造器方法——>attachBaseContext()——>onCreate()——>Activity的構(gòu)造方法——>onCreate()——>配置主題中背景等屬性——>onStart()——>onResume()——>測量布局繪制顯示在界面上

app的啟動(dòng)優(yōu)化:
基于上面的啟動(dòng)流程我們盡量做到如下幾點(diǎn)
 1.Application的創(chuàng)建過程中盡量少的進(jìn)行耗時(shí)操作
 2.如果用到SharePreference,盡量在異步線程中操作
 3.減少布局的層次,并且生命周期回調(diào)的方法中盡量減少耗時(shí)的操作

app啟動(dòng)遇見黑屏或者白屏問題
1.)產(chǎn)生原因 
其實(shí)顯示黑屏或者白屏實(shí)屬正常,這是因?yàn)檫€沒加載到布局文件,就已經(jīng)顯示了window窗口背景,黑屏白屏就是window窗口背景。
 示例:

 

2.)解決辦法
通過設(shè)置設(shè)置Style 
(1)設(shè)置背景圖Theme 
通過設(shè)置一張背景圖。 當(dāng)程序啟動(dòng)時(shí),首先顯示這張背景圖,避免出現(xiàn)黑屏

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="android:screenOrientation">portrait</item>
    <item name="android:windowBackground">>@mipmap/splash</item>

    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowNoTitle">true</item>
</style> 

(2)設(shè)置透明Theme 
通過把樣式設(shè)置為透明,程序啟動(dòng)后不會(huì)黑屏而是整個(gè)透明了,等到界面初始化完才一次性顯示出來

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:screenOrientation">portrait</item>
  </style> 

兩者對(duì)比:
 Theme1 程序啟動(dòng)快,界面先顯示背景圖,然后再刷新其他界面控件。給人刷新不同步感覺。
 Theme2 給人程序啟動(dòng)慢感覺,界面一次性刷出來,刷新同步。 
(3)修改AndroidManifest.xml

 <application
    android:name=".App"
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true">
    <activity android:name=".MainActivity"
     android:theme="@style/AppTheme">
      <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
    </activity>

  //......

</application> 

解決后示例:

 

3.)常見的Theme主題 

android:theme="@android:style/Theme.Dialog" //Activity顯示為對(duì)話框模式

android:theme="@android:style/Theme.NoTitleBar" //不顯示應(yīng)用程序標(biāo)題欄

android:theme="@android:style/Theme.NoTitleBar.Fullscreen" //不顯示應(yīng)用程序標(biāo)題欄,并全屏

android:theme="Theme.Light " //背景為白色

android:theme="Theme.Light.NoTitleBar" //白色背景并無標(biāo)題欄

android:theme="Theme.Light.NoTitleBar.Fullscreen" //白色背景,無標(biāo)題欄,全屏

android:theme="Theme.Black" //背景黑色

android:theme="Theme.Black.NoTitleBar" //黑色背景并無標(biāo)題欄

android:theme="Theme.Black.NoTitleBar.Fullscreen" //黑色背景,無標(biāo)題欄,全屏

android:theme="Theme.Wallpaper" //用系統(tǒng)桌面為應(yīng)用程序背景

android:theme="Theme.Wallpaper.NoTitleBar" //用系統(tǒng)桌面為應(yīng)用程序背景,且無標(biāo)題欄

android:theme="Theme.Wallpaper.NoTitleBar.Fullscreen" //用系統(tǒng)桌面為應(yīng)用程序背景,無標(biāo)題欄,全屏

android:theme="Theme.Translucent" //透明背景

android:theme="Theme.Translucent.NoTitleBar" //透明背景并無標(biāo)題

android:theme="Theme.Translucent.NoTitleBar.Fullscreen" //透明背景并無標(biāo)題,全屏

android:theme="Theme.Panel " //面板風(fēng)格顯示

android:theme="Theme.Light.Panel" //平板風(fēng)格顯示
干我們這行,啥時(shí)候懈怠,就意味著長進(jìn)的停止,長進(jìn)的停止就意味著被淘汰,只能往前沖,直到鳳凰涅槃的一天!

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論