Activity生命週期

2021-07-08 11:36:21 字數 2129 閱讀 5813

oncreate 和 onresume 在程式啟動時候都會啟動,

所有有些需要在oncreate onresume中都要實現的功能,之需要放在onresume中就可以了。

這樣還可以避免部分錯誤,比如在兩個事件中都彈出了提示框,這麼就會提示兩次。

前言

四大應用程式元件中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

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生命週期

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 有四個重要的...