如何做一家門戶網(wǎng)站seo常規(guī)優(yōu)化
文章目錄
- Android Activity啟動(dòng)模式
- 概述
- 四種啟動(dòng)模式
- Intent標(biāo)記
- 二者區(qū)別
Android Activity啟動(dòng)模式
概述
Activity 的管理方式是任務(wù)棧。棧是先進(jìn)后出的結(jié)構(gòu)。
四種啟動(dòng)模式
啟動(dòng)模式 | 說明 | 適用場景 |
---|---|---|
standard 標(biāo)準(zhǔn)模式 | 默認(rèn)模式,每次啟動(dòng)Activity都會(huì)創(chuàng)建一個(gè)新的Activity實(shí)例,并放在棧頂。 | 相對獨(dú)立的界面 |
singleTop 棧頂復(fù)用模式 | 如果啟動(dòng)的Activity在棧頂,則會(huì)復(fù)用該Activity實(shí)例,并回調(diào)onNewIntent() 方法。 | 用于接收通的界面 |
singleTask 棧內(nèi)復(fù)用模式 | 如果啟動(dòng)的Activity在棧內(nèi),則會(huì)復(fù)用該Activity實(shí)例,并回調(diào)onNewIntent() 方法,并清除它上方的實(shí)例。 | 全局的界面,如主界面 |
singIeInstance 單例模式 | 創(chuàng)建一個(gè)新任務(wù)棧,將新建一個(gè)Activity實(shí)例并放入新棧中,再次啟動(dòng)會(huì)回調(diào)onNewIntent() 方法。 | 單獨(dú)隔離的界面,如地圖界面 |
標(biāo)準(zhǔn)模式:
棧頂復(fù)用模式:
棧內(nèi)復(fù)用模式:
單例模式:
在AndroidManifest中設(shè)置:
<activityandroid:launchMode="standard" />
Intent標(biāo)記
標(biāo)記 | 說明 |
---|---|
FLAG_ACTIVITY_NEW_TASK | 在新任務(wù)棧中啟動(dòng)Activity,非Activity中啟動(dòng)Activity需要添加該屬性 |
FLAG_ACTIVITY_SINGLE_TOP | 棧頂復(fù)用模式(singleTop) |
FLAG_ACTIVITY_CLEAR_TOP | 啟動(dòng)模式為standard時(shí),棧中存在該Activity實(shí)例,則重新創(chuàng)建一個(gè)新實(shí)例,并清除原實(shí)例上方的所有實(shí)例;啟動(dòng)模式為singleTop時(shí),不會(huì)重建Activity,會(huì)調(diào)用onNewIntent()方法,并清除上方的所有實(shí)例。 |
FLAG_ACTIVITY_CLEAR_TASK | 必須配合FLAG_ACTIVITY_NEW_TASK使用,如果任務(wù)棧存在,則清空任務(wù)棧重新創(chuàng)建Activity實(shí)例,如果任務(wù)棧不存在,則新建任務(wù)棧并創(chuàng)建Activity實(shí)例。 |
使用:
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP)
二者區(qū)別
- 優(yōu)先級不同:Intent標(biāo)記的優(yōu)先級高于Manifest設(shè)置。
- 限定范圍不同:Manifest不能設(shè)置FLAG_ACTIVITY_CLEAR_TOP,Intent無法設(shè)置singleInstance。