首页
学习
活动
专区
工具
TVP
发布

Android的启动模式:singleTask与singleTop的使用

最近有小伙伴询问Activity的启动模式是使用singleTask好还是singleTop好,在两种模式中纠结,所以今天就简单讲解一下两种模式的使用场景!...推荐 个人博客:李益的小站 微信公众号:Code满满 Android 的四种启动模式(网上一搜一堆哦) standard:默认模式,允许多实例 singleTop:相比于standard,有新的启动请求时...的打开和关闭操作,就是将Activity压入(push)任务栈和从任务栈中弹出(pop)的操作 任务栈遵循先进后出的原则,在栈顶的Activity就是设备当前显示的Activity singleTask与singleTop...一般都是为了保证Activity在任务栈中的唯一性 singleTop的使用 使用singleTop模式的Activity在栈顶时只会在Task中存在一个实例,所以可以在以下场景中使用: 要打开的Activity...Activity Activity需要启动一个Service,最后Service对栈顶Activity进行操作 特定情况时,如进行数据刷新,自己跳转自己,走onNewIntent()刷新数据 等等… 总之,singleTop

94520
您找到你想要的搜索结果了吗?
是的
没有找到

对 FLAG_ACTIVITY_NEW_TASK、FLAG_ACTIVITY_CLEAR_TOP、FLAG_ACTIVITY_SINGLE_TOP 的理解

为了看得更清晰,以下使用代称 newtask:FLAG_ACTIVITY_NEW_TASK cleartop:FLAG_ACTIVITY_CLEAR_TOP singletop:FLAG_ACTIVITY_SINGLE_TOP...文章目录 一、default 1.1 default 1.2 单独 singletop 1.3 单独 cleartop 1.4 cleartop + singletop 二、newtask...2.1 单独 newtask 2.2 newtask + singletop 2.3 newtask + cleartop 2.4 newtask + cleartop + singletop 三、其他...1.2 单独 singletop activity 在前台(当前显示的栈的栈顶),不创建,它自己 onNewIntent 被调用 activity 不在前台,创建 1.3 单独 cleartop activity...singeltop > newtask、cleartop,先走 singletop activity 在前台(当前显示的栈的栈顶),不创建,它自己 onNewIntent 被调用 activity

88520

Android Activity的启动模式

简介 Activity有四种加载模式 standard singleTop singleTask singleInstance 设置方式 android:launchMode="singleTask"...创建一个新的实例,并将该Activity添加到当前 Task栈中.注意,这种方式不会启动新的Task,只是将新的 Activity添加到原有的Task 假设 栈结构为 ABC 再打开C 就会变成 ABCC singleTop...,但有一点不同:当将要被 启动的Activity已经位于Task栈顶时,系统不会重新创建 目标Activity实例,而是直接复用Task栈顶的Activity 假设 栈结构为 ABC 再打开C C为singleTop...就会变成 ABC 假设 栈结构为 ABCD 再打开C C为singleTop 就会变成 ABCDC singleTask: Task内单例模式 采用该加载模式时,Activity在同一个Task内只有一个实例...Activity时,又分为以下 三种情况: (1)如果将要启动的Activity不存在,那么系统将会创建该 实例,并将其加入Task栈顶 (2)如果将要启动的Activity已存在,且存在栈顶,那么此时 与singleTop

54930

singletask生命周期

1.singleTask和singletop都是保真了Activity在栈中的唯一性   2.singleTask和singleTop实例存在时,都不会重新创建 new task   不同之处有如下几点...但singleTask启动的的ActivityA不存在时,会重新创建ActivityA,调用方式OnCreate->OnStart->OnResume   2.如果singletop启动的ActivityB...在栈底时,在栈顶startActivity到这个ActivityB时会重新调动 onCreate->onStart->onResume,但不会调用OnDestroy   并且singletop启动的的...而singletop是逐级跳跃到栈顶   singleTask   singletop   追加一点singleInstance,虽然也是保证唯一性,但改模式的Activity是全局性的唯一性...4.singleTask不适合充当ChildActivity,但singletop适合   5.对作业栈,默认情况下,没有任何影响,因为栈的taskid是相同的,可以获取getTaskid(),默认情况下每个

31120

【Android 应用开发】Activity 返回堆栈管理 ( 阶段总结 | 任务栈管理 | 返回堆栈 | 清除返回堆栈 | 亲和性 | 启动模式补充 | standard | singleTop )

文章目录 一、 安卓应用任务栈管理 二、 任务与返回堆栈回顾 三、 返回堆栈清除 四、 关于亲和性回顾 五、 Activity 启动模式 LaunchMode 补充 ( standard | singleTop...Activity 界面时 , Intent 中设置了 FLAG_ACTIVITY_NEW_TASK 标志位 ; 五、 Activity 启动模式 LaunchMode 补充 ( standard | singleTop...模式分组 : ① 常用启动模式 : 其中 standard , singleTop 是经常使用的 , 功能类似 ; Activity 实例位置 : 上述两种启动模式的 Activity 可以放在任何堆栈的任何位置...Activity 时 , 当前栈顶的 Activity 实例是否是要启动的 Activity 实例类型 , 分两种情况进行讨论 ; ① 返回堆栈栈顶不是要启动的 Activity : 如果要启动的 singleTop...启动模式 Activity 实例 , 放入返回堆栈 ; 单个返回堆栈中可以存在多个 standard 和 singleTop 启动模式的 Activity 实例 ;

1.6K10

Android 四大组件学习之Activity七

Activity共有四种加载方式: 1:standard:标准模式,同时也是默认的加载方式 2:singleTop:Task栈顶单例模式 3:singleTask:Task栈内单例模式 4:singleInstance...上图就是FirstActivity的栈示意图 2:singleTop模式 这种模式分两种情况: a: 当此Activity位于栈顶 上面的FirstActivity代码不变(为了让大家看到我确实按下了,...当我按下时我会设置button的值),此时配置文件中的加载模式改为singleTop 演示效果如下: 通过上图可以看到,当加载模式是singleTop的话,并且次Activity位于栈顶,每次实例化...startActivity(intent); ++count; button.setText("button: " + count); } }); 运行效果如下: 此时栈里的情况为: 可以说明,SingleTop...:singTask加载模式: 此种加载模式分为3中: a: 如果要启动的Activity不存在,那就实例化并加入栈顶 b:如果要启动的Activity存在,并且位于栈顶,那就不需要实例化(这种情况就是SingleTop

21820

Android Activity的四种启动模式

二、Activity启动模式简介 Activity有四种启动模式,standard、singleTop、singleTask、singleInstance,默认启动模式是standard  2.1 standard...2.2 singleTop模式 改变Activity的启动模式,可以在配置文件中为Activity添加lauchMode属性 ?...singleTop模式为栈顶复用模式,通俗的说,就是如果栈顶的Activity和启动的Activity的是同一个,那么就直接复用,比如还是在ActivityA中跳转到ActivityB,我们将ActivityB...的启动模式设置为singleTop,因为当前栈顶是ActivityA,不是ActivityB,所以会创建新的ActivityB实例放入任务栈中 ?...Java代码设置启动模式 除了在配置文件中,我们还可以通过在Java代码中设置启动模式 intent.setFlags(); singleTask 对应 FLAG_ACTIVITY_NEW_TASK singleTop

65620

常见面试第三题之Activity的几种启动模式介绍

Activity有四种加载模式,分别为:standard(默认), singleTop, singleTask和 singleInstance。 2、这几种模式都是什么意思?该怎么用呢?...singleTop:如果某个Activity的Launch mode设置成singleTop,那么当该Activity位于栈顶的时候,再通过Intent跳转到本身这个Activity,则将不会创建一个新的实例压入栈中...D的Launch mode设置成了singleTop,那么在D中启动Intent跳转到D,那么将不会新创建一个D的实例压入栈中,此时栈的情况依然为:A B C D。...但是如果此时B的模式也是singleTop,D跳转到B,那么则会新建一个B的实例压入栈中,因为此时B不是位于栈顶,此时栈的情况就变成了:A B C D B。

724100

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券