- Activity的四種啟動(dòng)模式對(duì)比?
Standard:標(biāo)準(zhǔn)的啟動(dòng)模式,如果需要啟動(dòng)一個(gè)activity就會(huì)創(chuàng)建該activity的實(shí)例田柔。也是activity的默認(rèn)啟動(dòng)模式。
SingeTop:如果啟動(dòng)的activity已經(jīng)位于棧頂骨望,那么就不會(huì)重新創(chuàng)建一個(gè)新的activity實(shí)例硬爆。而是復(fù)用位于棧頂?shù)腶ctivity實(shí)例對(duì)象。如果不位于棧頂仍舊會(huì)重新創(chuàng)建activity的實(shí)例對(duì)象擎鸠。
SingleTask:設(shè)置了singleTask啟動(dòng)模式的activity在啟動(dòng)時(shí)缀磕,如果位于activity棧中,就會(huì)復(fù)用該activity劣光,這樣的話(huà)虐骑,在該實(shí)例之上的所有activity都依次進(jìn)行出棧操作,即執(zhí)行對(duì)應(yīng)的onDestroy()方法赎线,直到當(dāng)前要啟動(dòng)的activity位于棧頂廷没。一般應(yīng)用在網(wǎng)頁(yè)的圖集,一鍵退出當(dāng)前的應(yīng)用程序垂寥。
singleInstance:如果使用singleInstance啟動(dòng)模式的activity在啟動(dòng)的時(shí)候會(huì)復(fù)用已經(jīng)存在的activity實(shí)例颠黎。不管這個(gè)activity的實(shí)例是位于哪一個(gè)應(yīng)用當(dāng)中另锋,都會(huì)共享已經(jīng)啟動(dòng)的activity的實(shí)例對(duì)象。使用了singlestance的啟動(dòng)模式的activity會(huì)單獨(dú)的開(kāi)啟一個(gè)共享?xiàng)O凉椋@個(gè)棧中只存在當(dāng)前的activity實(shí)例對(duì)象
- Activity在有Dialog時(shí)按Home鍵的生命周期夭坪?
當(dāng)我們的Activity上彈出Dialog對(duì)話(huà)框時(shí),程序的生命周期依然是onCreate() —> onStart() —> onResume()过椎,在彈出Dialog的時(shí)候并沒(méi)有onPause()和onStop()方法室梅。而在此時(shí)我們按下Home鍵,才會(huì)繼續(xù)執(zhí)行onPause()和onStop()方法疚宇。這說(shuō)明對(duì)話(huà)框并沒(méi)有使Activity進(jìn)入后臺(tái)亡鼠,而是在點(diǎn)擊了Home鍵后Activity才進(jìn)入后臺(tái)工作。>原因就是敷待,其實(shí)Dialog是Activity的一個(gè)組件间涵,此時(shí)Activity并不是不可見(jiàn),而是被Dialog組件覆蓋了其他的組件榜揖,此時(shí)我們無(wú)法對(duì)其他組件進(jìn)行操作而已勾哩。
- 兩個(gè)Activity 之間跳轉(zhuǎn)時(shí)必然會(huì)執(zhí)行的是哪幾個(gè)方法?
首先定義兩個(gè)Activity举哟,分別為A和B思劳。
當(dāng)我們?cè)贏中激活B時(shí),A調(diào)用onPause()方法妨猩,此時(shí)B出現(xiàn)在屏幕時(shí)册赛,B調(diào)用onCreate()森瘪、onStart()逮栅、onResume()措伐。
這個(gè)時(shí)候B【B不是一個(gè)透明的窗體或?qū)υ?huà)框的形式】已經(jīng)覆蓋了A的窗體侥加,A會(huì)調(diào)用onStop()方法担败。