天天看點

四大元件 之一的 Activity

說到Android四大元件,相信都會說   

一:Activity    

二:Service  

三:Broadcast Receiver  廣播  

四:Content Provider  内容提供者

下面我們主要說的是  我對Activity 的了解

1:  先說一下概念 什麼是Activity呢?

Activity 是使用者接口程式,原則上它會提供給使用者一個互動式的接口功能。它是 android 應用程式的基本功能單元。Activity 本身是沒有界面的。是以activity類建立了一個視窗,開發人員可以通過setContentView(View)接口把UI放到activity建立的視窗上,當activity指向全屏視窗時,也可以用其他方式實作:作為漂浮視窗(通過windowIsFloating的主題集合),或者嵌入到其他的activity(使用ActivityGroup)。activity是單獨的,用于處理使用者操作。幾乎所有的activity都要和使用者打交道,

2:看Activity生命周期  看張圖檔 有助于了解

重點  了解 運作順序 

OnCreate()當程式被第一次啟動,會調用 OnCreate()生命周期方法 建立應用 ,在這裡可以做初始化的一些操作

OnStart() 當程式被建立 會調用OnStart() 準備運作 方法    這時,Activity已經可見了  不過是在背景;

OnResume() 可見的  可做擷取焦點 的 操作  這時  Actiivity 完全可見  在前端    然後服務運作起來了

OnPause() 準備暫停  這裡 可以做存儲資料的操作但是不能太耗時 失去焦點    

OnStop()  準備停止 可做一些微量的回收操作

OnDestroy() 準備銷毀  在這裡 可以做釋放記憶體 殺死程式的操作

OnRestart() 準備再次運作  

這裡提供一個簡單的 運作 示例

應用運作時  然後按home 鍵 回到桌面            OnPause()   再次啟動應用   OnResume()

應用運作時  按傳回鍵  回到桌面  OnPause() OnStop()  再次啟動應用 OnRestart()  OnStart() OnResume()

當應用處于停止狀态  OnStop()  如果優先級高的應用需要記憶體 就會殺死 如果再次運作該應用就會重新 回調OnCreate() 

3:Activity的兩種啟動方式

   (1):startActivity(intent)  參數 Intent對象 

   (2):startActivityForResult(Intent intent, int requestCode) 參數一:Intent對象  參數二:請求碼

需要知道的是  跳轉過去的 Activity 回傳資料的時候  寫 setResult(int resultCode, Intent intent) ;參數一:結果碼  參數二:Intent對象

onActivityResult(int requestCode, int resultCode, Intent data)方法 這裡可以接受傳回的參數值

4: activity的四種加載模式

 一:standard 标準模式  系統預設的模式   後進先出的棧結構

每啟動一個Activity都會重新建立一個新的Activity 與任務棧,被誰啟動的Activity的任務棧就會存在誰的任務棧中       

  二:singleTop 棧頂複用模式 

如果一個Activity 已經在任務棧的棧頂,那麼不會重新建立,不會調用它的OnCreate() OnStart() 因為狀态沒有發生過變化,但是 會調用OnNewIntent(),通過這個方法 可以取出目前請求的資訊。

如果Acitivity不是位于棧頂 那麼就會重制建立。

  三: singleTask 棧内複用模式  也稱内單例模式

如果一個Activity已經存在,系統不會重新建立,也會調用OnNewIntent().       當Activity被建立且以singleTask模式啟動,首先尋找屬于它的任務棧,不存在就建立,存在就判斷是否有它的執行個體存在,不存在 建立執行個體  存在  會調到棧頂 同樣 調用OnNewIntent()  

  四:singleInstance  單執行個體模式 也稱全局單例模式

具有singleTask的全部特性,每個Activity都會有一個單獨屬于它的任務棧存在,無論系統如何調用,都隻有一個獨立的任務棧,複用性強,除非任務棧被銷毀了。

繼續閱讀