Android组件系列----Activity的生命周期
【聲明】
歡迎轉載,但請保留文章原始出處→_→
生命壹號:http://www.cnblogs.com/smyhvae/
文章來源:http://www.cnblogs.com/smyhvae/p/3856555.html
?
【正文】?
一、Activity的生命周期:
解釋如下:
? ? ? activity啟動的時候:onCreate ---> onStart ---> onResume.
? ? ? 為了方便說明這里把當前activity稱為MainActivity,其他的activity稱為SecondActivity、ThirdActivity等等。
? ? ? 通過上圖的我們可以看出activity從running狀態跳轉到onPause狀態的原因是:Another activity comes into the foreground. 也就是說有另外一個actvity被啟動并運行了,比如說MainActivity通過startActivity啟動了SecondActivity,那么SecondActivity就在ui視圖的最頂層了,而MainActivity不再是最頂層的activity了,此時就會onPause了,此時我們依稀還能看到MainActivity,只是MainActivity已經站在他人之后了。
? ? ? 而當MainActivity完全被SecondActivity擋住,完全看不見的時候,此時MainActivity就會onStop了。我們看看上圖從onPause到onStop的原因是:the activity is no longer visiable. 也就是說此時MainActivity完全不可見了,從這里我們可以猜測當按下home鍵的時候,當前activity就會處于onStop的狀態。
從actvitiy的生命周期圖中,我們可以看出activity是可以停留在onPause和onStop在這兩個狀態上的,因為可以相應的恢復。
? ? ? 當在MainActivity中按back鍵,退出時,最終就會走到onDestory,或者在代碼中調用finish()的時候也會走到onDestroy這一步。
? ? ? 當MainActivity處于onPause和onStop狀態時,當更高優先級的apps需要內存,而此時系統內存不夠了,那么android系統就會將MainActivity所在的進程給殺了以釋放資源。當然被殺了之后,想重生,那必須得從頭來過: onCreate ---> onStart() ---> onResume().
?
二、成對兒的生命周期函數:(相同的顏色表示一對)
? ? ?繪制表格如下:
| 生命周期函數 | 調用時機 | 舉例 |
| onCreate | 在Activity對象被第一次創建時調用 | 買車 |
| onStart | 當Activity變得可見時調用 | 打火,啟動 |
| onResume | 當Activity開始準備和用戶交互時調用 | 踩油門,驅動汽車前進 |
| onPause | 當系統即將啟動另外一個Activity之前調用 | 松開油門 |
| onStop | 當前Activity變得不可見時調用 | 熄火 |
| onDestroy | 當前Activity被銷毀之前調用 | 車輛報廢 |
| onRestart | 當一個Activity再次啟動之前調用 | ? |
?
?
?
?
?
?
?
?
?
?
?
???
? ?
?
? ? ? ?一個Activity的對象的生命周期可類比于人的生命周期。一個階段將調用對應的生命周期函數,即每個階段需要做每個階段應該做的事。
注意:生命周期函數是由系統調用的。開發人員只需要復寫函數中的內容即可。
?
三、Activity對象的狀態:
Resumed:Activity對象出于運行狀態。
Paused:另一個Activity位于前端,但是本Activity還可見。
Paused狀態常用于:另一個Activity為對話框,彈出來之后只占據了屏幕的一小部分;但后面的Activity還是可見的,但是處于paused狀態。
注:一個Activity出于paused狀態時,系統并不會釋放資源。釋放資源你的操作要靠開發者來完成。
Stopped:另一個Activity位于前端,完全遮擋本Activity。
?官方文檔解釋如下:
Managing the Activity Lifecycle
Managing the lifecycle of your activities by implementing callback methods is crucial to developing a strong and flexible application. The lifecycle of an activity is directly affected by its association with other activities, its task and back stack.
An activity can exist in essentially three states:
ResumedIf an activity is paused or stopped, the system can drop it from memory either by asking it to finish (calling its?finish()?method), or simply killing its process. When the activity is opened again (after being finished or killed), it must be created all over.
四、舉一個實例:
? ? ? 現在有兩個Activity,當用戶點擊當前默認的MainActivity中的按鈕后,會跳到SecondActivity。生命周期如下:
啟動默認Activity時:
MainActivity:onCreate
MainActivity:onStart
MainActivity: onResume
點擊按鈕后,跳到SecondActivity:(MainActivity被保留至棧底)
MainActivity:onPause
SecondActivity:onCreate
SecondActivity:onStart
SecondActivity: onResume
MainActivity: onStop
按返回菜單后,回到MainActivity:(SecondActivity被銷毀)
SecondActivity: onPause
MainActivity:onRestart
MainActivity:onStart
MainActivity: onResume
SecondActivity: onStop
SecondActivity: onDestroy
?
參考鏈接:http://www.cnblogs.com/hibraincol/archive/2012/03/06/2382120.html
?
我的公眾號
?
想學習代碼之外的軟技能?不妨關注我的微信公眾號:生命團隊(id:vitateam)。
?
掃一掃,你將發現另一個全新的世界,而這將是一場美麗的意外:
?
?
總結
以上是生活随笔為你收集整理的Android组件系列----Activity的生命周期的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: camtasia studio 8.2使
- 下一篇: 现代软件工程 第十六章 【IT 行业的创