一、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...