天天看點

Android Activity總結

Activity概念

Activity是Android元件中最基本也是最為常見用的四大(Activity,Service服務,Content Provider内容提供者,BroadcastReceiver廣播接收器)之一

Activity是一個應用程式元件,提供一個螢幕,使用者可以用來互動為了完成某項任務。Activity中所有操作都與使用者密切相關,是一個負責與使用者互動的元件,可以通過setContentView(View)來顯示指定控件。

在一個android應用中,一個Activity通常就是一個單獨的螢幕,它上面可以顯示一些控件也可以監聽并處理使用者的事件做出響應。Activity之間通過Intent進行通信。

生命周期

Android Activity總結

啟動Activity:系統會先調用onCreate方法,然後調用onStart方法,最後調用onResume,Activity進入運作狀态。

目前Activity被其他Activity覆寫其上或被鎖屏:系統會調用onPause方法,暫停目前Activity的執行。

目前Activity由被覆寫狀态回到前台或解鎖屏:系統會調用onResume方法,再次進入運作狀态。

目前Activity轉到新的Activity界面或按Home鍵回到主屏,自身退居背景:系統會先調用onPause方法,然後調用onStop方法,進入停滞狀态。

使用者後退回到此Activity:系統會先調用onRestart方法,然後調用onStart方法,最後調用onResume方法,再次進入運作狀态。

目前Activity處于被覆寫狀态或者背景不可見狀态,即第2步和第4步,系統記憶體不足,殺死目前Activity,而後使用者退回目前Activity:再次調用onCreate方法、onStart方法、onResume方法,進入運作狀态。

使用者退出目前Activity:系統先調用onPause方法,然後調用onStop方法,最後調用onDestory方法,結束目前Activity。

存在狀态

Active/Running

一個新 Activity 啟動入棧後,它顯示在螢幕最前端,處理是處于棧的最頂端(Activity棧頂),此時它處于可見并可和使用者互動的激活狀态,叫做活動狀态或者運作狀态(active or running)。

Paused

當 Activity失去焦點, 被一個新的非全屏的Activity 或者一個透明的Activity 被放置在棧頂,此時的狀态叫做暫停狀态(Paused)。此時它依然與視窗管理器保持連接配接,Activity依然保持活力(保持所有的狀态,成員資訊,和視窗管理器保持連接配接),但是在系統記憶體極端低下的時候将被強行終止掉。是以它仍然可見,但已經失去了焦點故不可與使用者進行互動。

Stopped

如果一個Activity被另外的Activity完全覆寫掉,叫做停止狀态(Stopped)。它依然保持所有狀态和成員資訊,但是它不再可見,是以它的視窗被隐藏,當系統記憶體需要被用在其他地方的時候,Stopped的Activity将被強行終止掉。

Killed

如果一個Activity是Paused或者Stopped狀态,系統可以将該Activity從記憶體中删除,Android系統采用兩種方式進行删除,要麼要求該Activity結束,要麼直接終止它的程序。當該Activity再次顯示給使用者時,它必須重新開始和重置前面的狀态。

activity之間的跳轉

顯示方法

startActivity

隐式方法

Xml中配置

結束傳回資料

startActivityForResult

Activity的四種launchMode

1.standard—預設

2.singleTop

—當從SecondActivity跳轉到FirstActivity時,系統發現存在有FirstActivity執行個體,但不是位于棧頂,于是重新生成一個執行個體。這就是singleTop啟動模式,如果發現有對應的Activity執行個體正位于棧頂,則重複利用,不再生成新的執行個體。

3.singleTask

—發現有對應的Activity執行個體,則使此Activity執行個體之上的其他Activity執行個體統統出棧,使此Activity執行個體成為棧頂對象,顯示到幕前。

4.singleInstance

—這種啟動模式比較特殊,因為它會啟用一個新的棧結構,将Acitvity放置于這個新的棧結構中,并保證不再有其他Activity執行個體進入。