97干视频,99国产精品懂色,亚洲精品99久久久久中文字幕,伊人五月丁香综合AⅤ,国产精品成人免费999

  您的位置:華清遠(yuǎn)見教育科技集團(tuán) >> 新聞動(dòng)態(tài) >> Android資料 >> Activity的生命周期回調(diào)方法  
 
Activity的生命周期回調(diào)方法
分享到:

Activity的生命周期可分為全生命周期、可視生命周期和活動(dòng)生命周期,每個(gè)生命周期中包含不同的事件回調(diào)方法。

1、全生命周期

全生命周期是從Activity建立到銷毀的全部過程,始于onCreate(),結(jié)束于onDestroy()。

使用者通常在onCreate()中初始化用戶界面,分配引用類變量,綁定數(shù)據(jù)控件,并創(chuàng)建服務(wù)和線程等Activity所能使用的全局資源和狀態(tài),并在onDestroy()中釋放這些資源,并確保所有外部連接被關(guān)閉,例如,網(wǎng)絡(luò)或數(shù)據(jù)庫的聯(lián)系等;在一些極端的情況下,Android系統(tǒng)會(huì)不調(diào)用onDestroy()方法,而直接終止進(jìn)程。

為了避免創(chuàng)造短期對(duì)象和增加垃圾收集的時(shí)間,以致對(duì)用戶體驗(yàn)產(chǎn)生直接影響。如果你的Activity需要?jiǎng)?chuàng)建一些對(duì)象的話,好在onCreate方法中創(chuàng)建,因?yàn)樗谝粋(gè)Actvity的完整生命周期中僅調(diào)用一次。

2、可視生命周期

可視生命周期是Activity在界面上從可見到不可見的過程,開始于onStart(),結(jié)束于onStop()。
    ·onStart()一般用來初始化或啟動(dòng)與更新界面相關(guān)的資源。
    ·onStop()一般用來暫;蛲V挂磺信c更新用戶界面相關(guān)的線程、計(jì)時(shí)器和服務(wù)。
    ·onRestart()方法在onSart()前被調(diào)用,用來在Activity從不可見變?yōu)榭梢姷倪^程中,進(jìn)行一些特定的處理過程。
    ·onStart()和onStop()會(huì)被多次調(diào)用。
    ·onStart()和onStop()也經(jīng)常被用來注冊(cè)和注銷BroadcastReceiver或者傳感器。

在onStart()和onStop()這兩個(gè)方法中間,Actvity對(duì)用戶將會(huì)是可見的,盡管它可能部分被遮擋著。在一個(gè)Activity完整的生命周期中可能會(huì)經(jīng)過幾個(gè)Activity可見的生命周期,因?yàn)锳ctivity可能會(huì)經(jīng)常在前臺(tái)和后臺(tái)之間切換。在極端情況下,系統(tǒng)將銷毀掉一個(gè)Activity即使它在可見狀態(tài)并且不調(diào)用onStop方法。

3、活動(dòng)生命周期

活動(dòng)生命周期是Activity在屏幕的上層,并能夠與用戶交互的階段,開始于onResume(),結(jié)束于onPause()。在Activity的狀態(tài)變換過程中onResume()和onPause()經(jīng)常被調(diào)用,因此這兩個(gè)方法中應(yīng)使用更為簡(jiǎn)單、高效的代碼。
    ·onPause()是第一個(gè)被標(biāo)識(shí)為“可終止”的方法。
    ·在onPause()返回后,onStop()和onDestroy()隨時(shí)能被Android系統(tǒng)調(diào)用。
    ·onPause()常用來保存持久數(shù)據(jù),如界面上用戶的輸入信息等。

當(dāng)系統(tǒng)而不是用戶關(guān)閉一個(gè)活動(dòng)來節(jié)省內(nèi)存時(shí),用戶可能希望返回到活動(dòng)且是它之前的狀態(tài)。為了獲得活動(dòng)被關(guān)閉之前的狀態(tài),可以執(zhí)行活動(dòng)的onSaveInstanceState()方法。Android在活動(dòng)容易被銷毀前調(diào)用這個(gè)方法,也就是調(diào)用onPause()之前。該方法的參數(shù)是一個(gè)Bundle對(duì)象,這個(gè)對(duì)象可以名值對(duì)記錄活動(dòng)的動(dòng)態(tài)狀態(tài)。當(dāng)活動(dòng)再次啟動(dòng)時(shí),Bundle同時(shí)被傳遞到onCreate()和調(diào)用onCreate()之后的方法onRestoreInstanceState()。

因?yàn)閛nSaveInstanceState()方法不總被調(diào)用,你應(yīng)該僅使用onSaveInstanceState()來記錄活動(dòng)的臨時(shí)狀態(tài),而不是持久的數(shù)據(jù),應(yīng)該使用onPause()來存儲(chǔ)持久數(shù)據(jù)。

擴(kuò)展閱讀:onPause()和onSaveInstanceState()這兩個(gè)函數(shù)都可以用來保存界面的用戶輸入數(shù)據(jù),它們有什么區(qū)別呢?

(1)onPause()一般用于保存持久性數(shù)據(jù),并將數(shù)據(jù)保存在存儲(chǔ)設(shè)備上的文件系統(tǒng)或數(shù)據(jù)庫系統(tǒng)中的。

(2)onSaveInstanceState()主要用來保存動(dòng)態(tài)的狀態(tài)信息,信息一般保存在Bundle中。
    ·Bundle是能夠保存多種格式數(shù)據(jù)的對(duì)象。
    ·onSaveInstanceState()保存在Bundle中的數(shù)據(jù),系統(tǒng)在調(diào)用onRestoreInstanceState()和onCreate()時(shí),會(huì)同樣利用Bundle將數(shù)據(jù)傳遞給函數(shù)。

當(dāng)一個(gè)活動(dòng)啟動(dòng)另一個(gè)活動(dòng)時(shí),這兩個(gè)活動(dòng)都經(jīng)歷生命周期轉(zhuǎn)換。一個(gè)暫;蚴峭V,然而被啟動(dòng)的活動(dòng)則啟動(dòng)。有時(shí),這些活動(dòng)可能需要協(xié)調(diào)。當(dāng)這兩個(gè)活動(dòng)在同一個(gè)進(jìn)程中,生命周期的回調(diào)順序是明確界定的:調(diào)用當(dāng)前活動(dòng)的onPause()方法;然后,按序調(diào)用啟動(dòng)活動(dòng)的onCreate()、onStart()、onResume()方法;之后,如果該活動(dòng)不需再在屏幕上可見,則調(diào)用它的onStop()方法。下面我們就來詳細(xì)學(xué)習(xí)一下關(guān)于Android如何管理多個(gè)Activity。

(1)Android用Activity Stack來管理多個(gè)Activity,因此,同一時(shí)刻只會(huì)有頂上的Activity是處于active或者running狀態(tài)。其他的Activity都被壓在下面。

(2)如果非活動(dòng)的Activity仍是可見的(如果上面壓著的是一個(gè)非全屏的Activity或透明的Activity),它是處于paused狀態(tài)的。在系統(tǒng)內(nèi)存不足的情況下,paused狀態(tài)的Activity是有可能被系統(tǒng)銷毀掉的。

小貼士:因?yàn)锳ndroid應(yīng)用程序的生存期并不是由應(yīng)用本身直接控制的,而是由 Android系統(tǒng)平臺(tái)進(jìn)行管理的,所以,對(duì)于開發(fā)者而言,需要了解不同的組件ActivityService和IntentReceiver的生命,切記:如果組件的選擇不當(dāng),系統(tǒng)很有可能會(huì)關(guān)閉一個(gè)正在進(jìn)行重要工作的進(jìn)程。

 更多相關(guān)文章

·圖解Android Activity生命周期
·Android應(yīng)用組件Activity
·Android進(jìn)程與生命周期
·Android進(jìn)程的生命周期
·Android常用組件生命周期