Android组件系列----Activity的生命周期
【聲明】
歡迎轉(zhuǎn)載,但請(qǐng)保留文章原始出處→_→
生命壹號(hào):http://www.cnblogs.com/smyhvae/
文章來(lái)源:http://www.cnblogs.com/smyhvae/p/3856555.html
?
【正文】?
一、Activity的生命周期:
解釋如下:
? ? ? activity啟動(dòng)的時(shí)候:onCreate ---> onStart ---> onResume.
? ? ? 為了方便說(shuō)明這里把當(dāng)前activity稱(chēng)為MainActivity,其他的activity稱(chēng)為SecondActivity、ThirdActivity等等。
? ? ? 通過(guò)上圖的我們可以看出activity從running狀態(tài)跳轉(zhuǎn)到onPause狀態(tài)的原因是:Another activity comes into the foreground. 也就是說(shuō)有另外一個(gè)actvity被啟動(dòng)并運(yùn)行了,比如說(shuō)MainActivity通過(guò)startActivity啟動(dòng)了SecondActivity,那么SecondActivity就在ui視圖的最頂層了,而MainActivity不再是最頂層的activity了,此時(shí)就會(huì)onPause了,此時(shí)我們依稀還能看到MainActivity,只是MainActivity已經(jīng)站在他人之后了。
? ? ? 而當(dāng)MainActivity完全被SecondActivity擋住,完全看不見(jiàn)的時(shí)候,此時(shí)MainActivity就會(huì)onStop了。我們看看上圖從onPause到onStop的原因是:the activity is no longer visiable. 也就是說(shuō)此時(shí)MainActivity完全不可見(jiàn)了,從這里我們可以猜測(cè)當(dāng)按下home鍵的時(shí)候,當(dāng)前activity就會(huì)處于onStop的狀態(tài)。
從actvitiy的生命周期圖中,我們可以看出activity是可以停留在onPause和onStop在這兩個(gè)狀態(tài)上的,因?yàn)榭梢韵鄳?yīng)的恢復(fù)。
? ? ? 當(dāng)在MainActivity中按back鍵,退出時(shí),最終就會(huì)走到onDestory,或者在代碼中調(diào)用finish()的時(shí)候也會(huì)走到onDestroy這一步。
? ? ? 當(dāng)MainActivity處于onPause和onStop狀態(tài)時(shí),當(dāng)更高優(yōu)先級(jí)的apps需要內(nèi)存,而此時(shí)系統(tǒng)內(nèi)存不夠了,那么android系統(tǒng)就會(huì)將MainActivity所在的進(jìn)程給殺了以釋放資源。當(dāng)然被殺了之后,想重生,那必須得從頭來(lái)過(guò): onCreate ---> onStart() ---> onResume().
?
二、成對(duì)兒的生命周期函數(shù):(相同的顏色表示一對(duì))
? ? ?繪制表格如下:
| 生命周期函數(shù) | 調(diào)用時(shí)機(jī) | 舉例 |
| onCreate | 在Activity對(duì)象被第一次創(chuàng)建時(shí)調(diào)用 | 買(mǎi)車(chē) |
| onStart | 當(dāng)Activity變得可見(jiàn)時(shí)調(diào)用 | 打火,啟動(dòng) |
| onResume | 當(dāng)Activity開(kāi)始準(zhǔn)備和用戶(hù)交互時(shí)調(diào)用 | 踩油門(mén),驅(qū)動(dòng)汽車(chē)前進(jìn) |
| onPause | 當(dāng)系統(tǒng)即將啟動(dòng)另外一個(gè)Activity之前調(diào)用 | 松開(kāi)油門(mén) |
| onStop | 當(dāng)前Activity變得不可見(jiàn)時(shí)調(diào)用 | 熄火 |
| onDestroy | 當(dāng)前Activity被銷(xiāo)毀之前調(diào)用 | 車(chē)輛報(bào)廢 |
| onRestart | 當(dāng)一個(gè)Activity再次啟動(dòng)之前調(diào)用 | ? |
?
?
?
?
?
?
?
?
?
?
?
???
? ?
?
? ? ? ?一個(gè)Activity的對(duì)象的生命周期可類(lèi)比于人的生命周期。一個(gè)階段將調(diào)用對(duì)應(yīng)的生命周期函數(shù),即每個(gè)階段需要做每個(gè)階段應(yīng)該做的事。
注意:生命周期函數(shù)是由系統(tǒng)調(diào)用的。開(kāi)發(fā)人員只需要復(fù)寫(xiě)函數(shù)中的內(nèi)容即可。
?
三、Activity對(duì)象的狀態(tài):
Resumed:Activity對(duì)象出于運(yùn)行狀態(tài)。
Paused:另一個(gè)Activity位于前端,但是本Activity還可見(jiàn)。
Paused狀態(tài)常用于:另一個(gè)Activity為對(duì)話框,彈出來(lái)之后只占據(jù)了屏幕的一小部分;但后面的Activity還是可見(jiàn)的,但是處于paused狀態(tài)。
注:一個(gè)Activity出于paused狀態(tài)時(shí),系統(tǒng)并不會(huì)釋放資源。釋放資源你的操作要靠開(kāi)發(fā)者來(lái)完成。
Stopped:另一個(gè)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.
四、舉一個(gè)實(shí)例:
? ? ? 現(xiàn)在有兩個(gè)Activity,當(dāng)用戶(hù)點(diǎn)擊當(dāng)前默認(rèn)的MainActivity中的按鈕后,會(huì)跳到SecondActivity。生命周期如下:
啟動(dòng)默認(rèn)Activity時(shí):
MainActivity:onCreate
MainActivity:onStart
MainActivity: onResume
點(diǎn)擊按鈕后,跳到SecondActivity:(MainActivity被保留至棧底)
MainActivity:onPause
SecondActivity:onCreate
SecondActivity:onStart
SecondActivity: onResume
MainActivity: onStop
按返回菜單后,回到MainActivity:(SecondActivity被銷(xiāo)毀)
SecondActivity: onPause
MainActivity:onRestart
MainActivity:onStart
MainActivity: onResume
SecondActivity: onStop
SecondActivity: onDestroy
?
參考鏈接:http://www.cnblogs.com/hibraincol/archive/2012/03/06/2382120.html
?
我的公眾號(hào)
?
想學(xué)習(xí)代碼之外的軟技能?不妨關(guān)注我的微信公眾號(hào):生命團(tuán)隊(duì)(id:vitateam)。
?
掃一掃,你將發(fā)現(xiàn)另一個(gè)全新的世界,而這將是一場(chǎng)美麗的意外:
?
?
總結(jié)
以上是生活随笔為你收集整理的Android组件系列----Activity的生命周期的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: camtasia studio 8.2使
- 下一篇: 现代软件工程 第十六章 【IT 行业的创