activity生命週期解密
生命有始有終,人生旅途中坦蕩起伏總會有些不如意的時候,讓我們來看activity的生命始末~
android api官方文件:
相信這張圖,大家都不陌生。activity有7個狀態,彼此間相互轉換~
作為開發者,尤其是像我這種的菜鳥,我只需要關心其中的轉折狀態點即可。
場景:應用啟動後,狀態執行順序:oncreate()->onstart()->onresume
關心的2種情況:
1、back返回鍵
正常流程,非常簡單,依次執行,onpause()->onstop()->ondestory()
2、特別關注,home鍵。
——此鍵是使用者操作最頻繁的乙個動作。所以,開發者必須處理好中間的狀態轉換。
生活場景1:當我們開啟應用程式時,比如瀏覽器,我正在瀏覽nba新聞,看到一半時,我突然想聽歌,這時候我們會選擇按home鍵,然後去開啟**應用程式,而當我們按home的時候,瀏覽器的activity先後執行了onpause()->onstop()這兩個方法,這時候應用程式並沒有銷毀。
當我們再次啟動瀏覽器,看nba新聞時,則瀏覽器先後又分別執行了onrestart()->onstart()->onresume()三個方法。
生活場景2:思考下,當再次啟動瀏覽器的時候,生命週期是從onrestart()->onstart()->onresume()
執行的啊,為什麼還顯示的是,之前瀏覽的那一頁nba資訊呢? 理論上,應該是首頁的nba內容啊,因為重新執行onstart()->onresume()
啊。這到底是為什麼?
原因:在按home鍵的時候,activity執行了onpause()->onstop()
,在onpause()
中,程式儲存了當前你瀏覽的nba新聞的相關資訊。當你再次啟動瀏覽器的時候,在onrestart()
packagecom.tutor.activitydemo;
import
import
android.os.bundle;
import
android.util.log;
import
android.widget.edittext;
public
class activitydemo extends
activity
@override
protected
void
onstart()
//當按home鍵時,然後再次啟動應用時,我們要恢復先前狀態
@override
protected
void
onrestart()
@override
protected
void
onresume()
//當我們按home鍵時,我在onpause方法裡,將輸入的值賦給mstring
@override
protected
void
onpause()
@override
protected
void
onstop()
@override
protected
void
ondestroy()
}
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 有四個重要的...