Activity生命週期詳解

2021-08-16 06:25:58 字數 2275 閱讀 8341

在android應用程式裡,乙個activity就是乙個使用者介面。使用者與程式的互動就是通過activity來實現的,可以看成**的頁面。主activity是程式啟動的入口。應用程式成功啟動之後,呈獻給使用者的第乙個介面,即為該程式的主activity。

android 的虛擬機器(vm)是使用基於棧(stack based) 管理,主要有四種狀態:

active (執行狀態):

使用者啟動應用程式或activity 後,activity 執行中的狀態,可與使用者之間進行互動,此時當前activity位於棧頂。

需要注意的是,在android 平台上,同乙個時刻只會有乙個activity 處於活動(active)或執行(running)狀態。其他的activity 都處於未啟動(dead)、停止(stopped)、或是暫停(pause)的狀態。

paused (暫停狀態)

當activity 暫時暗下來,退到背景畫面的狀態。

當使用toast、alertdialog或**呼入時,都會讓原本執行的activity 退到背景畫面。新出現的toast、alertdialog 等介面元件蓋住了原來的activity 畫面。activity 處在」paused」狀態時,使用者無法與原activity 互動。

stopped (停止狀態)

activity完全被另乙個activity所覆蓋,則其狀態為stopped。

有其他activity 正在執行,而當前activity 已經離開螢幕,不再動作的狀態。通過長按」home」鈕,可以叫出所有處於」stopped」狀態的應用程式列表。在「stopped」狀態的activity,還可以通過「notification」來喚醒。

dead (銷毀狀態)

activity 尚未被啟動、已經被手動終止,或已經被系統**的狀態。

要手動終止activity,可以在程式中呼叫「finish」函式,若是被系統**,可能是因為記憶體不足,因此系統根據記憶體不足時的**規則,將處於「stopped」狀態的activity 所占用的記憶體**。

每個活動(activity)都處於某個狀態。對於開發者來說,是無法控制其應用程式處於某個狀態的,這些均由系統來完成。但當乙個活動狀態發生改變的時,開發者可以通過呼叫on***()方法,獲取相關的通知資訊。

完整的activity 生命週期由」create」狀態開始,由」destroy」狀態結束。建立

(create)時分配資源,銷毀(destroy)時釋放資源。

以上關於各個階段的狀態詳細說明大部分來自於android之activity生命週期**(一),並在其基礎上做了一些小小的補充。

以上7個方法中除了onrestart()方法,其他的都是兩兩相對的,從而又可以將活動分為3個生存期。

完整生命期:活動在oncreate()方法到ondestory()方法之間經歷的時期。

第一次啟動activity:依次執行以下方法:oncreate() -> mainactivity created -> onstart() -> mainactivity started -> onresume() -> mainactivity actived,進入活動狀態。

結束activity:依次執行以下方法:onpause () -> mainactivity paused -> onstop () -> mainactivity stoped -> ondestory() -> mainactivity killed。

可見生存期:活動在onstart()方法到onstop()方法之間經歷的時期。

當activity 執行到「start」狀態時,就可以在螢幕上看到該activity。相反當activity 執行到「stop」狀態時,此activity 就會從螢幕上消失。當使用者按下back 按鈕回到上乙個activity 時,會先到restart 狀態,再到一般的start 狀態。

前台生存期:活動在onresume()方法到onpause()方法之間經歷的時期。

使用者能否直接訪問螢幕(resume/pause),當有個toast、alertdialog、簡訊、**等資訊發生時,原來的activity 會處於「pause」狀態,暫時放棄直接訪問螢幕的能力,被中斷到背景去,將前景交給優先順序高的事件。當這些優先順序高的事件處理完後,activity 就改進入」resume」狀態,此時又直接訪問螢幕。

Activity生命週期詳解

針對上述對生命的描述,可以從三個角度來對activity的生命週期進行劃分 1.完整的activity的生命週期。即從oncreate到ondestroy之間的整個過程。2.可見的activity的生命週期。即從onstart到onstop之間的整個過程,在這個期間,activity一直處於可見的狀...

Activity生命週期詳解(三)

三 停止與重啟 activity 恰當的停止與重啟我們的activity是很重要的。在activity生命週期中,他們能夠確保使用者感知到程式的存在並不會丟失他們的進度。在下面一些關鍵的場景中會涉及到停止與重啟 activity類提供了onstop 與onrestart 方法來允許在activity...

Activity生命週期

oncreate 設定activity所使用的布局檔案 按鈕繫結 等靜態設定操作 onstart 該activity能被我們看到的時候就會呼叫onstart onresume 能夠獲得使用者焦點 onpause 啟動另外乙個activity的時候就會呼叫第乙個activity的該方法 onstop ...