activity的四種啓動模式和生命週期

activity有四種啓動模式

1  standard啓動模式 默認啓動模式,在沒有顯式指定的情況下activity默認此種啓動模式    在這種啓動模式下程序每次啓動一個新的活動都會在返回棧中新建一個活動的實例,並將之入棧,存在於棧頂

2 singletop啓動模式   在該啓動模式下如果當前活動已經在棧頂,那麼新建的活動不會去創建新的實例,而是使用在返回棧中已經存在的該活動(返回棧棧頂是當前活動)

3 singletask啓動模式當活動的啓動模式爲singletask時新建一個活動會首先在返回棧中查找是否已經有次活動,如果返回棧中存在該活動的實例那麼返回棧將該實例之上的所有活動的實例都彈棧,將該活動的實例置於棧頂.,如果返回棧中沒有該活動的實例則會創建一個該活動的實例.

4 singleinstance啓動模式  在當前啓動模式下會給該activity創建一個單獨的task用來存儲activity的實例 例如當儲存在abc三個活動的時候ac爲standard啓動模式,b爲singleinstance啓動模式  同過A->B->C的啓動模式後通過gettaskid()方法獲取每個活動實例的taskid發現AC在同一個棧中B在另外一個棧中,當點擊返回按鈕發現activity直接從C->A 這是因爲ac在同一個棧中c彈棧後直接暴露棧A, B的實例在另外一個返回棧中當AC的返回棧空了之後會去顯示B所在的返回棧的棧頂活動所以連續按三次返回按鈕顯示的頁面爲C->A->B



Android中有四大組件,活動(下文稱之爲Activity)是其中之一,Activity是Android中使用最頻繁的組件,Activity的主要作用是顯示UI內容並且實現與用戶的相互交互,在Android中佔據着重要的位置,研究Activity的生命週期對於Android的學習是最基礎的一件事。Activity的啓動的過程試衣間十分複雜的事情,在此我們從最簡單的開始學習Activity的生命週期。在Activity生命週期中有七大方法依次分別爲onCreate()、onStart()、onRestart()、onResume()、onPause()、onStop()、onDestory(),這七大方法分別管理者Activity的啓動、暫停、退出等一系列的操作,通過對Activity生命週期的深入瞭解我們可以在Activity的生命週期中實現很多重要的操作,同時也會使得自己開發的軟件性能更加的優秀,所以作爲一個Android開發者Activity的生命週期的學習是一件十分重要的事情。

 

 

 

Activity的生命週期是一個系統調用的過程,當一個Activity第一次被創建的時候首先調用onCrea()方法,在此時Activity做一些初始化的事項,或者爲後續的初始化工作做一些數據準備工作,故而在該方法中不宜做耗時操作。

當執行完onCrate方法之後會緊接着執行onStart方法,此時Activity是對用戶不可見的狀態,即沒有獲得焦點,當執行到onResume()方法的時候用戶可以看到要展示的界面,此時Activity獲得焦點處於棧頂,可以與用戶互動。此時的Activity是處於活動狀態的我們稱之爲Activity(活動)狀態。處於此狀態下的Activity接下來可能有一下幾種狀態:

1) 當另外一個Activity(稱之爲B_Activity)被啓動並覆蓋當前Activity(稱之爲A_Activity)或者A_Activity直接進入後臺,A_Activity會先執行onPause()方法,此時Activity進入失去焦點的狀態(可能依然可見),然後執行onStop方法,當前Activity進入停滯狀態。此時如果A_Activit重新獲得焦點,那麼會依次調用onRestart、onStart、onResume方法。

2) 如果A_Activity在onResume狀態時候被銷燬,即點擊了返回按鈕,那麼會直接執行onPause、onStop方法繼而執行onDestory方法。

3) 當然如果A_Activity在onPause或者onStop狀態被kill時A_Activity想要重新返回棧頂需要重新執行onCreate。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章