什么是優(yōu)雅式呢涩盾?
- 即Receiver + singleTask.我們知道Activity有四種加載模式撒妈,而singleTask就是其中的一種琼稻,使用這個(gè)模式之后毒租,當(dāng)startActivity時(shí)鸳慈,他先回在當(dāng)前棧中查詢是否存在Activity的實(shí)例妒挎,如果存在异逐,則將其至于棧頂耕肩,并將其之上的所有Activity移除棧汉嗽。我們打開一個(gè)app,首先是一個(gè)splash界面欲逃,然后會(huì)finish掉splash頁面。跳轉(zhuǎn)到主頁饼暑。然后會(huì)在主頁進(jìn)行N次的跳轉(zhuǎn)稳析,期間會(huì)產(chǎn)生數(shù)量不定的Activity,有的被銷毀撵孤,有的駐留在棧中迈着,但是棧底永遠(yuǎn)是我們的HomeActivity。這樣就讓問題變得簡(jiǎn)單很多了邪码。我們只需要兩步操作即可優(yōu)雅的實(shí)現(xiàn)app的退出裕菠。
1.在HomeActivity注冊(cè)一個(gè)退出廣播,和第二個(gè)廣播是一樣闭专,但是這里只需要在HomeActivity一個(gè)頁面注冊(cè)即可奴潘。
2.設(shè)置HomeActivity的啟動(dòng)模式為singleTask
- 當(dāng)我們需要退出的時(shí)候只需要startActivity(this,HomeActivity,class),再發(fā)送一個(gè)退出廣播旧烧。上面代碼首先會(huì)把棧中HomeActivity之上的所有Activity移除棧,然后接到廣播finish自己画髓。一切OK掘剪!沒有彈框,不用考慮機(jī)型Rom適配奈虾。不會(huì)有內(nèi)存問題夺谁,就是那么的優(yōu)雅,簡(jiǎn)單肉微。