activity的四種狀態說明

2021-06-21 16:18:02 字數 1643 閱讀 7066

一、activity主要的四種狀態:

running(執行):在螢幕前台(位於當前任務堆疊的頂部)

paused(暫停):失去焦點但仍然對使用者可見(覆蓋activity可能是透明或未完全遮擋)

stopped(停止):完全被另乙個activity覆蓋

destroyed(銷毀):退出,完全銷毀

二、事件方法鏈

2.1  進入activity

oncreate  -> onstart  ->  onresume

2.2  back鍵

onpause -> onstop -> ondestroy

2.3  home鍵

home鍵退出:onpause -> onstop 

home鍵回來:onrestart ->  onstart -> onresume  

2.4  休眠/恢復

休眠:  onpause

恢復:  onresume

2.5  旋轉螢幕

未設定android:configchanges:

onpause  ->  onstop  ->  ondestory  ->  oncreate  -> onstart  ->  onresume 

設定了android:configchanges="orientation|keyboardhidden":

2.6  來電

來電,顯示來電介面:

onpause  ->  onstop

關閉**介面,重新回到當前activity:

onrestart ->  onstart -> onresume

2.7  其他activity 

進入下乙個activity:

onpause  ->  onstop

從其他activity返回至當前acitivity:

onrestart ->  onstart -> onresume

三、與activity生命週期結合的應用場景

3.1  與廣播(broadcast)結合 

在onresume註冊廣播(registerlinstener),在onpause登出廣播(unregisterlinstener)。 例如:

做"搖一搖"功能(感測器)、監聽網路變化,就可以在onresume中註冊監聽,在onpause裡登出掉,已節省資源提高效率。

3.2  與服務(service)結合

在onstart繫結服務(bindservice),在onstop中取消繫結(unbindservice)。 例如: 

需要通過service定時更新ui上的資料,而activity的可見週期在onstart與onstop之間,那麼就可以再onstart時啟動服務,在onstop時停止服務。為了節約系統資源,除了提高使用者體驗以外,開發人員應盡可能的優化程式。

3.3  與cursor結合

使用managedquery讓activity幫你管理cursor的生命週期,不用自己去close。但也有一些問題,補充兩篇文章:這裡1、 這裡2。

3.4  釋放資源

可以在ondestory中釋放一些資源。比如可以在ondestory時呼叫mediaplayer的release。

Activity的四種狀態

running狀態 乙個新的activity啟動入棧後,它在螢幕最前端,處於棧的最頂端,此時它處於可見並可和使用者互動的啟用狀態。paused狀態 當activity被另乙個透明或者dialog樣式的activity覆蓋時的狀態。此時它依然與視窗管理器保持連線,系統繼續維護其內部狀態,它仍然可見,但...

Activity四種啟動模式

launchmode在多個activity跳轉的過程中扮演著重要的角色,它可以決定是否生成新的activity例項,是否重用已存在的activity例項,是否和其他activity例項公用乙個task裡。這裡簡單介紹一下task的概念,task是乙個具有棧結構的物件,乙個task可以管理多個acti...

Activity四種啟動模式

activity的啟動模式可以通過androidmanifest.xml檔案中的元素的屬性來指定,一共有4中模式 android name activitymain android launchmode singletask 1 standard 2 singletop 3 singletask 4...