Activity生命週期

2021-06-22 12:40:28 字數 2169 閱讀 7672

前言

四大應用程式元件中activity是最常用的,也是必須掌握的乙個元件。這裡分幾章梳理歸納一些實用的知識點與大家分享。宣告

:農民伯伯:

正文

一、配圖及說明

activity主要的三種狀態:

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

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

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

二、事件方法鏈

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。

四、注意

4.1  所有activity生命週期方法的實現都必須先呼叫其父類版本。

4.2  由於activity經常會暫停和恢復之間切換,所以onresume和onpause這兩個方法應當是輕量級的。

4.3  在系統再某種緊急情況下需要**記憶體,onstop、ondestory可能不會被呼叫,因此需要在onpause中把需要長期儲存的資料儲存起來。

理解activity壽命

兩分鐘徹底讓你明白android activity生命週期(**)!

android生命週期函式大全

結束

要寫的內容很多,同樣這方面的文章也很多,仍然建議大家仔細的看activity的api和開發者指南。 

Activity生命週期

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

activity生命週期

乙個activity的啟動順序 oncreate onstart onresume 當另乙個activity啟動時 第乙個activity onpause 第二個activity oncreate onstart onresume 第乙個activity onstop 當返回到第乙個activity...

Activity 生命週期

activities 在系統中是以 activity 棧的形式被管理的。當乙個新的 activity 啟動時,它將會被放到棧的頂部並變成 running activity 上乙個activity 會被至於它的下面,在新 activity 存在期間它都不會到前端來。乙個 activity 有四個重要的...