Android四大元件 Activity

2021-07-25 07:38:22 字數 2669 閱讀 4004

1.activity是什麼?

2.android的任務棧

該圖顯示出了任務棧中的每個新activity如何向返回棧新增專案,當使用者按下「返回」按鈕時,當前的activity出棧而前乙個activity恢復執行

3.activity的生命週期

在android的開發者**上google給我們了一張流程圖,通過這張流程圖可以很方便的去了解activity從產生到銷毀的全過程,只有對activity的習性足夠了解,才能更好的控制activity為我們服務。

由圖可知activity的這一生中總個有7種狀態,其中只有onresumed(),onpaused()和onstopped()這三個狀態時穩定,而其他的狀態都是過度狀態,很快就會變成下乙個狀態。下來就來一一介紹這7種狀態。

4.管理任務棧

每次啟動的時候都會建立該activity的乙個新的例項,而不是將已有的activity例項移動到棧頂,這樣的話就是導致同乙個activity有可能被例項化很多次。但是,做為開發者的我們來說肯定不會希望同乙個activity被例項化很多次,這時我們就要通過給當前的activity設定啟動模式的方法來對任務棧中的activity進行管理,啟動模式一共有四種,分別是standard、singletop、singletask和singleinstance,可以在androidmanifest.xml中通過給標籤指定android:launchmode屬性來選擇啟動模式。

「standard」

—標準模式,standard是activity預設的啟動模式,即如果沒有指定當前activity的啟動模式則系統預設使用標準模式, 在這種啟動模式下,每當啟動乙個新的activity時系統就會為該activity建立乙個新的例項,並置於棧頂的位置。對於使用standard模式的activity來說,系統不會在乎這個活動是否已經在任務棧中,每次啟動時就會建立該activity的乙個新的例項並置於棧頂的位置。

「singletop」

—在某些情況下使用standard模式做為啟動模式會有些不太合理,比如,此時活動已經在棧頂了,為什麼再次啟動該活動的時候還需要重新建立例項。此時就應該使用singletop模式,當activity的啟動模式指定為singletop時,在啟動activity時如果發現任務棧的棧頂已經是該activity的例項了,則認為可以直接使用棧頂的例項,不會再建立乙個新的activity例項。

「singletask」

—當被啟動的activity處於棧頂的位置時,通過使用singletop模式可以很好的解決重複建立棧頂activity的問題,但是該活動沒有在棧頂的位置使用singletop模式還是會建立多個activity例項,此時就要通過使用singletask模式來解決這個問題。當activity的啟動模式指定為singletask時,每次啟動該活動時系統首先會在任務棧中檢查是否存在該activity的例項,如果有則把這個activity之上的所有activity統統出棧,將該activity置為棧頂的位置,如果沒有就會建立乙個新的activity例項置於棧頂。

「singleinstance」

—singleinstance模式應該是這四種啟動模式中最複雜的乙個,不同於以上的三種啟動模式,當乙個activity被指定為singleinstance模式時,啟動該activity時系統會啟動乙個新的任務棧來管理這個activity,並且系統不會向宣告成「singleinstance」的activity所在的任務棧中再新增其它的activity,也就是說,這種啟動模式下的activity所在的任務棧中有且只會有乙個activity,通過activity再啟動其它的activity則也會被放入到別的任務棧中。在這種啟動模式下系統會有乙個單獨的任務棧來管理該activity,不管是哪個應用程式來啟動這個activity都共用乙個任務棧,也就解決了共享activity例項的問題。

其實不管是activity是在乙個新任務棧中啟動還是在當前任務棧中啟動,返回鍵永遠都會把我們帶回前乙個activity中

5.清理返回棧

「alwaysretaintaskstate」

—如果在任務棧的根activity中將次屬性設定為「true」,則不會發生系統預設的邏輯,即使任務棧切換到後台很長一段時間,任務棧仍然可以將所有的activity保留在其堆疊中

「cleartaskonlaunch」

—如果在任務棧的根activity中將次屬性設定為「true」,則每當使用者離開任務棧然後返回時,系統都會將堆疊清除到只剩下根activity,即使使用者只離開任務棧很短的時間,使用者也始終會返回到任務的初始狀態

「finishontasklaunch」

—如果在任務棧的根activity中將次屬性設定為「true」,則只要使用者離開當前任務棧,再次返回該任務棧時這個activity就會被清除掉。這個屬性的作用類似於cleartaskonlaunch,只不過cleartaskonlaunch是作用於整個任務棧的,而finishontasklaunch僅僅是作用於當前activity的

android 四大元件

1.activity 2.service 3.contentprovider 應用中的資料,對外進行共享,其它應用可以通過內容提供者,可以訪問到你應用中的資料,對資料進行增刪改查 1 對不同的資料格式,統一了檔案格式和資料訪問api 2 內容提供者要繼承contentprovider類 3 在清單檔...

Android 四大元件

activity intent receiver service content provider 並不是每乙個android應用程式都需要這四種構造塊,這不是必須的。當我們明確了我們的應用需要哪些構造塊後,我們就需要在androidmanifest.xml中登記這些構造塊的清單。這個配置檔案用於定...

android四大元件

android 四大元件 1.contentprovider contentprovider是什麼 android中的乙個應用元件 作為乙個引用元件的表現是生命週期方法 android中內容提供者 一般是內部儲存中的資料 contentprovider 物件的應用場合 例如 3.contentpri...