說到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都會有一個單獨屬于它的任務棧存在,無論系統如何調用,都隻有一個獨立的任務棧,複用性強,除非任務棧被銷毀了。