Activity
- 概念
它指的是用戶可以看到的界面,界面中有一些控件溉潭,它是放在res/layout下面较幌,是xml文件來實(shí)現(xiàn)的揍瑟。啟動(dòng)activity時(shí)需要在配置文件中注冊(cè)。
Activity的生命周期
- oncreate
[Android入門- 關(guān)于Activity下的onCreate方法]
activity創(chuàng)建的時(shí)候調(diào)用乍炉。
這里面還以Bundle形式提供對(duì)以前存儲(chǔ)的任何狀態(tài)進(jìn)行訪問绢片。
整個(gè)生命周期只會(huì)調(diào)用一次而且是 最先開始的。
一般做初始化操作岛琼。 - onstart
屏幕上對(duì)用戶可見時(shí)調(diào)用底循,啟動(dòng)activity,使界面可見衷恭。 - onresume
開始與用戶交互時(shí)調(diào)用此叠。
恢復(fù)activity,使界面可操作 - onpause
可見保存當(dāng)前數(shù)據(jù)随珠,類似于對(duì)話框的時(shí)候調(diào)用灭袁。
被暫停時(shí)保存當(dāng)前游戲信息,界面可見不可操作 - onstop
界面不可見窗看,不可操作 - ondestroy
activity完全移除時(shí)調(diào)用 - onrestart
- onSaveInstanceState
activity即將移除棧頂保留UI狀態(tài)時(shí)調(diào)用 - onRestoreInstanceState 用來恢復(fù)UI狀態(tài)
三個(gè)activity的跳轉(zhuǎn)
1)創(chuàng)建三個(gè)activity分別是MainActivity茸歧,Main2Activity,Main3Activity显沈;
2)寫出每個(gè)activity的生命周期软瞎,并輸出相應(yīng)的類名和方法名
3)打印結(jié)果:
- 當(dāng)MainActivity啟動(dòng)的時(shí)候
main onCreate
main onStart
main onResume
-
當(dāng)MainActivity跳轉(zhuǎn)到Main2Activity的時(shí)候
onResume() 的注釋中逢唤,建議是在onResume()中打開獨(dú)占設(shè)備(比如相機(jī)),與onResume()對(duì)應(yīng)的是onPause()涤浇,關(guān)閉相機(jī)的操作也應(yīng)該在此方法中被調(diào)用鳖藕;否則,考慮一下如下場景:如果MainActivity打開了相機(jī)只锭,我們點(diǎn)擊某按鈕要跳轉(zhuǎn)到Main2Activity中著恩,Main2Activity也想打開相機(jī);假設(shè)MainActivity的onPause() 在 Main2Activity啟動(dòng)后再被調(diào)用蜻展,
那Main2Activity根本就無法再正常啟動(dòng)相機(jī)喉誊。
摘自:[Activity的生命周期]
main onPause
main2 onCreate
main2 onStart
main2 onResume
main onStop
- Main2Activity回退到MainActivity的時(shí)候
main2 onPause
main onRestart
main onStart
main onResume
main2 onStop
main2 onDestroy
- 當(dāng)Main2Activity跳轉(zhuǎn)到Main3Activity的時(shí)候
為什么main2先調(diào)用onpause呢?有一種情況就是如果先調(diào)用main2 onPause纵顾,main2 onStop伍茄。那么當(dāng)main2跳轉(zhuǎn)到main3 的過程中main3打不開了,那么界面就是黑屏施逾,嚴(yán)重影響用戶體驗(yàn)敷矫。如果是下面的情況就不會(huì)出現(xiàn)黑屏。
main2 onPause
main3 onCreate
main3 onStart
main3 onResume
main2 onStop
- 當(dāng)Main3Activity跳轉(zhuǎn)到MainActivity的時(shí)候
main3 onPause
main onCreate
main onStart
main onResume
main3 onStop