最近有小伙伴询问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
在 singleTop 栈顶复用模式,如果要开启的activity在任务栈的顶部已经存在,就不会创建新的实例,而是调用 onNewIntent() 方法。避免栈顶的activity被重复的创建。...intent-filter> 修改为: <activity android:name=".aty.MainActivity" android:launchMode="<em>singleTop</em>...} }); XML清单配置 把他修改为<em>singleTop</em>... 耗时操作返回页面...还有一种场景 从activity A启动了个service进行耗时操作,或者某种监听,这个时候你home键了,service收集到信息,要返回activityA了,就用<em>singleTop</em>启动,实际不会创建新的
为了看得更清晰,以下使用代称 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
简介 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
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(),默认情况下每个
文章目录 一、 安卓应用任务栈管理 二、 任务与返回堆栈回顾 三、 返回堆栈清除 四、 关于亲和性回顾 五、 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 实例 ;
Activity的启动模式 Activity存在4种启动模式:standard、singleTop、singleTask、singleInstance 可以在AndroidManifest.xml中通过给标签指定...图片 singleTop 使用singleTop模式。...当Activity的启动模式指定为singleTop,在启动Activity时如果发现返回栈的栈顶已经是该Activity则认为可以直接使用它,不会再创建新的Activity实例。...如我们再次打开一个SecondActivity再在此基础上启动FirstActivity,就会创建一个新的FirstActivity实例,此时栈里存在两个FirstActivity singleTask 使用singleTop
LaunchMode 有四种,分别为 Standard,SingleTop,SingleTask 和 SingleInstance,每种模式的实现原理一楼都做了较详细说明,下面说一下具体使用场景: Standard...SingleTop: SingleTop 模式一般常见于社交应用中的通知栏行为功能,例如:App 用户收到几条好友请求的推送消息,需要用户点击推送通知进入到请求者个人信息页,将信息页设置为 SingleTop
Activity有四种启动模式 1、standard 2、singleTop 3、singleTask 4、singleInstance standard标准模式 1、standard是Activity...standard模式下,每当启动一个新的Activity,他就会进入任务栈,并处于栈顶的位置, 2、对于使用standard模式的Activity每次启动都会创建一个新的实例 3、适用于绝大数的应用场景 singleTop...模式 singleTop启动模式与standard类似,不同的是,当启动的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
ActivityA为standard模式 singleTop模式 在启动activity之前会检查栈顶activity是否为启动的activity实例对象,如果是那么触发activity的onNewIntent...ActivityB为singleTop模式 singleTask模式 和singleTop的区别在与,启动activity之前不仅检查栈顶activity是否为启动的activity实例对象,而是检查整个堆栈中是否有该
SingleTop 模式 SingleTop 模式适用于需要频繁更新数据或响应新意图的界面。例如,消息通知界面在收到新消息时,只需更新现有界面的内容,而无需创建新的实例。...属性,我们能够轻松指定 Activity 的启动模式,如下所示: <activity android:name=".MainActivity" android:launchMode="<em>singleTop</em>..."> 处理 SingleTop 模式 在 SingleTop 模式下,我们可以通过重写 onNewIntent() 方法来处理新的意图或更新数据,示例代码如下: public...注意 SingleTop 模式中的生命周期:在 SingleTop 模式下,当 Activity 位于栈顶时,不会重新创建实例。
-- Stub Activities --> ... 这就是常说的,占坑。
Android Activity的四种启动模式 Activity的四种启动模式想必入门安卓开发一两年的都了解, · standard · singleTop · singleTask · singleInstance...singleTop singleTop的意思可以理解为在栈顶只有一个实例对象。当再次启动时若栈顶已经有,那么不会实例化一个新的,而是调用它的 onNewIntent()方法。
二、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
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。
|---启动一个Activity,该Activity就会在返回栈中入栈 |---该Activity处于栈顶的位置 |---每次启动都会创建该Activity的新实例 singleTop...standard .png :2:singleTop模式:Activity1为standard, Activity2 为singleTop ?...singleTop.gif 依次打开Activity1、2、2、1、2 E/TASK_ID: Activity1 Task id is 82 E/TASK_ID: Activity2 Task id is...销毁 E/TASK_ID: Activity1 销毁 E/TASK_ID: Activity2 销毁 E/TASK_ID: Activity1 销毁 可见第二次打开Activity2时并无变化,因为singleTop...singleTop.png ---- :3:singleTask模式:Activity1为standard, Activity2 为singleTask ?
启动模式分为四种,分别是standard、singleTop、singleTask、singleInstance....Code演示 ---- singleTop 说明 当活动的启动模式指定为singleTop,在启动活动时,如果发现返回栈的栈顶已经是该活动,则认为可以直接使用它,不会创建新的活动实例。
在实际项目中我们应该根据特定需求为每个活动指定恰当的启动模式, 启动模式一共有4种,standard,singleTop,singleTask,singleInstance,可以在AndroidManifest.xml...singleTop 当启动模式指定为singleTop,在启动活动的时候,如果发现返回栈的栈顶已经是该活动,则认为可以直接使用,不会创建新的实例。...修改AndroidManifest.xml标签中主活动的启动模式: <activity android:name=".MainActivity" android:launchMode="<em>singleTop</em>...singleTask 使用<em>singleTop</em>可以解决重复创建栈顶活动的问题,但是如果该活动并未处在栈顶,还是会创建多个实例的。
2:singleTop:singleTop:模式和默认模式(standard)都会创建一个新的实例,区别是singleTop在创建时如果此时桟顶为要创建的实例,那么就不再新创建,而是直接使用桟顶的实例。
领取专属 10元无门槛券
手把手带您无忧上云