activity的四种启动模式

前言:启动模式对我而言就如之前的写的文章事件传递是一样的感受,能说出来,问你个问题,就懵圈的那种,本文将从以下三个方面来介绍启动模式,权当是对该知识点的巩固与加深

1.四种模式的介绍及其应用场景

2.对singleInstance加强理解

1.四种模式的介绍及其应用场景

1.standard:标准启动模式,也是activity的默认启动模式。在这种模式下启动的activity可以被多次实例化,即在同一个任务中可以存在多个activity的实例

2.singleTop:栈顶复用

    1>栈顶存在,复用

    2>栈顶不存在,就如standard一样

应用场景:

点击通知栏打开栈顶的Activity,如果standard模式,可能会出现创建多个的情况

3.singleTask:栈内复用

    1>栈中存在,清除栈中在其以上的实例

    2>栈中不存在,就如standard一样

场景:以作业帮为例

    1>我的课程/其他位置-->课程详情页-->章节详情页-->课程-->章节-->.....课程详情页面

        点击back-->我的课程/其他位置    

    2>我的课程/其他位置-->课程详情页-->章节详情页-->课程-->章节-->.....章节页面

        点击back-->课程详情-->我的课程/其他位置

4.singleInstance:加强版的singleTask,存在于单独的任务栈

2.对singleInstance加强理解

问题1:(activity不标注默认为standard) A-->B(singleInstance)-->C,点击back,回到哪个界面?

解答:之前凭第六感觉得是:B-->A(~~~~(>_<)~~~~),亲自实践后: A-->B 

C与A是在一个任务栈中的,B单独一个任务栈,C与A依次出栈后,B暴露在前台,back后出栈,回到桌面

问题2:A-->B(singleInstance),然后点击home按键,再点击app,展示的是哪个页面(A/B)?

解答:同样凭第六感觉:B,点击back是A,亲自实践后:A,点击back,回到launcher

从桌面点击app,会进入与MainActivity的栈中,此时栈中只有A,此时点击back,

launcher(singleInstance)-->A-->B(singleInstance)

launcher(singleInstance)-->A

A出栈,就回到launcher了

备注:之前一直想不明白点击back,为什么不显示B,把launcher启动方式看成singleInstance,就理解了,百度网上说的什么最近栈/其他的解释,反正我是没懂)

问题3:A(singleInstance)-->B然后点击menu按键,回到哪个界面,再点击back界面又回到那个界面??

解答:不猜了,反正都猜不对,答案:B

launcher(singleInstance)-->A(singleInstance)-->B

launcher(singleInstance)-->B

B,点击back回到Launcher

A与B属于不同的栈结构,task1中只有A,点击back,A出栈,就回到了launcher

参考链接:

Android中Activity四种启动模式和taskAffinity属性详解 - 张纪刚的博客 - CSDN博客

你可能感兴趣的:(activity的四种启动模式)