activity 启动模式_Android世界:Activity的启动模式及其适用范围
一、Activity啟動(dòng)模式簡(jiǎn)介
activity啟動(dòng)模式,可以理解為activity在任務(wù)棧(也叫“回退棧”)的回退規(guī)則,即點(diǎn)擊“back”鍵時(shí),activity的執(zhí)行順序。為節(jié)省資源,方便調(diào)用,Android構(gòu)建不同的啟動(dòng)模式以便于開(kāi)發(fā)者在不同場(chǎng)景使用。
該屬性聲明在Manifest文件中,由launchMode進(jìn)行配置,內(nèi)含4種啟動(dòng)模式,如下:
補(bǔ)充:任務(wù)棧,是一個(gè)先進(jìn)后出的存儲(chǔ)空間,存放運(yùn)行過(guò)程中的各activity對(duì)象引用。
二、啟動(dòng)模式介紹及使用場(chǎng)景
聲明:下方各流程圖均來(lái)源于https://blog.csdn.net/zy_jibai/article/details/80587083,有興趣可以去看看。
Standard:標(biāo)準(zhǔn)模式,不聲明該屬性時(shí),默認(rèn)模式。啟動(dòng)activity時(shí),將activity對(duì)象放置到任務(wù)棧的棧頂,如果不存在任務(wù)棧,首先創(chuàng)建一個(gè)任務(wù)棧;正常創(chuàng)建、銷(xiāo)毀activity。
優(yōu)點(diǎn):便于activity的正常管理,邏輯相對(duì)簡(jiǎn)單;
缺點(diǎn):同一activity可能被創(chuàng)建多次,不利于activity的重用,造成資源的浪費(fèi);
SingleTop:單頂模式,當(dāng)activity存在于棧頂時(shí),不會(huì)重構(gòu)activity,而是調(diào)用onNewIntent(Intent intent)方法加載之前的頁(yè)面;當(dāng)activity不存在于棧頂,就會(huì)重新構(gòu)建activity,并將其顯示到棧頂;
優(yōu)點(diǎn):在棧頂時(shí),重用棧頂activity;
缺點(diǎn):activity可能存在多次創(chuàng)建;
適用場(chǎng)景:①來(lái)推送消息后,點(diǎn)擊消息跳轉(zhuǎn)到詳情界面,防止創(chuàng)建多個(gè)界面;②即時(shí)通訊的聊天界面等。
SingleTask:單任務(wù)棧模式;當(dāng)activity不存在于任務(wù)棧,進(jìn)行創(chuàng)建;當(dāng)存在于任務(wù)棧中,即移除其頂部的activity,將其移到棧頂,顯示出來(lái)。
優(yōu)點(diǎn):actiivity重用,只存在一個(gè)activity;節(jié)約內(nèi)存,用戶(hù)體驗(yàn)好;
缺點(diǎn):移除其他activity,不利用管理;
適用范圍:應(yīng)用的啟動(dòng)界面,防止其他應(yīng)用在調(diào)啟時(shí),創(chuàng)建多個(gè)應(yīng)用界面;如:網(wǎng)易新聞的新聞界面(MainActivity)
做瀏覽器、微博之類(lèi)的應(yīng)用,比如其他App需要打開(kāi)我們的瀏覽器頁(yè)面,就可以配置他為singleTask模式,保證他只有一個(gè)唯一實(shí)例,節(jié)約內(nèi)存同時(shí)按下返回鍵后的感官也更順暢。但是需要注意,提供給人調(diào)用的頁(yè)面最好是棧底元素。
SingleInstance:單實(shí)例模式,創(chuàng)建的activity位于新的task中。如果已經(jīng)創(chuàng)建過(guò)目標(biāo)Activity實(shí)例,則不會(huì)創(chuàng)建新的Task,而是將以前創(chuàng)建過(guò)的Activity喚醒。
優(yōu)點(diǎn):
1. 以singleInstance模式啟動(dòng)的Activity具有全局唯一性,即整個(gè)系統(tǒng)中只會(huì)存在一個(gè)這樣的實(shí)例。
2. 以singleInstance模式啟動(dòng)的Activity在整個(gè)系統(tǒng)中是單例的,如果在啟動(dòng)這樣的Activiyt時(shí),已經(jīng)存在了一個(gè)實(shí)例,那么會(huì)把它所在的任務(wù)調(diào)度到前臺(tái),重用這個(gè)實(shí)例。
3. 以singleInstance模式啟動(dòng)的Activity具有獨(dú)占性,即它會(huì)獨(dú)自占用一個(gè)任務(wù),被他開(kāi)啟的任何activity都會(huì)運(yùn)行在其他任務(wù)中。
4. 被singleInstance模式的Activity開(kāi)啟的其他activity,能夠在新的任務(wù)中啟動(dòng),但不一定開(kāi)啟新的任務(wù),也可能在已有的一個(gè)任務(wù)中開(kāi)啟。
原文:https://blog.csdn.net/zivensonice/article/details/51569502
缺點(diǎn):不利于回收利用資源;
適用場(chǎng)景:需要全局只創(chuàng)建一個(gè)activity的場(chǎng)景,如,網(wǎng)易新聞的鎖屏界面、手機(jī)來(lái)電界面等;
總結(jié)
以上是生活随笔為你收集整理的activity 启动模式_Android世界:Activity的启动模式及其适用范围的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python装饰器_python装饰器完
- 下一篇: python怎么选择安装位置图片_怎么下