`
52xianmengyu
  • 浏览: 64021 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类

FLAG_ACTIVITY_CLEAR_TOP和FLAG_ACTIVITY_REORDER_TO_FRONT

阅读更多
Activity的两种启动模式:FLAG_ACTIVITY_CLEAR_TOP和FLAG_ACTIVITY_REORDER_TO_FRONT

1. 如果已经启动了四个Activity:A,B,C和D。在D Activity里,我们要跳到B Activity,同时希望C finish掉,可以在startActivity(intent)里的intent里添加flags标记,如下所示:
Java代码 
Intent intent = new Intent(this, B.class);  
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(intent); 

  这样启动B Activity,就会把D,C都finished掉,如果你的B Activity的启动模式是默认的(multiple) ,则B Activity会finished掉,再启动一个新的Activity B。
  如果不想重新再创建一个新的B Activity,则在上面的代码里再加上:
Java代码 
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);  

这样B Activity就不会再创建一个新的了,而是会重用之前的B Activity,同时调用B Activity的onNewIntent()方法。

2. 如果已经启动了四个Activity:A,B,C和D,在D Activity里,想再启动一个Actvity B,但不变成A,B,C,D,B,而是希望是A,C,D,B,则可以像下面写代码:
Java代码 
Intent intent = new Intent(this, MainActivity.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);  
startActivity(intent);  
 

分享到:
评论

相关推荐

    android Intent.FLAG大全

    7. **FLAG_ACTIVITY_REORDER_TO_FRONT** 如果目标Activity已经存在于栈中,这个标志会将其移动到栈顶,但不会清除它上面的Activity。 8. **FLAG_ACTIVITY_NO_HISTORY** 设置这个标志,新启动的Activity将不会在...

    Android 两种启动模式的实例详解

    Intent的FLAG_ACTIVITY_CLEAR_TOP和FLAG_ACTIVITY_REORDER_TO_FRONT Activity的两种启动模式:FLAG_ACTIVITY_CLEAR_TOP和FLAG_ACTIVITY_REORDER_TO_FRONT 1. 如果已经启动了四个Activity:A,B,C和D。在D Activity...

    Activity启动模式及Intent的Flag属性对Intent传值的影响

    - **FLAG_ACTIVITY_REORDER_TO_FRONT**:如果Activity已经存在于栈中,将其移动到栈顶,但不会清除栈上其他Activity。 3. **Intent传值的影响**: - `Intent`可以通过`putExtra()`方法传递各种类型的数据,如字符...

    Android编程实现两个Activity相互切换而不使用onCreate()的方法

    以上所述,通过合理使用`FLAG_ACTIVITY_REORDER_TO_FRONT`和`FLAG_ACTIVITY_CLEAR_TOP`标志,以及重写`onNewIntent()`方法,我们可以避免频繁调用`onCreate()`,提高Activity之间的切换效率。同时,自定义动画能提供...

    Android 改变Activity切换方式

    4. `FLAG_ACTIVITY_REORDER_TO_FRONT`:如果目标Activity已经在栈中,将其移动到栈顶,但不会清除其他Activity。 例如,如果我们希望在点击某个按钮时,即使当前Activity已经在栈中,也总是创建一个新的实例,可以...

    多个Activity跳转的小结

    而FLAG_ACTIVITY_REORDER_TO_FRONT可以将Activity移动到栈顶,但不创建新的实例。 最后,我们需要注意避免内存泄漏和栈溢出问题。长时间持有Activity引用可能导致内存泄漏,影响应用性能。而无限制地创建Activity...

    activity的启动方式

    例如,`FLAG_ACTIVITY_REORDER_TO_FRONT`会将Activity移动到栈顶,而不需要创建新实例;`FLAG_ACTIVITY_CLEAR_TOP`会清除栈中位于目标Activity之上的所有Activity。 了解这些启动模式后,开发者可以根据应用场景...

    Android activity堆栈及管理实例详解

    14. `FLAG_ACTIVITY_REORDER_TO_FRONT`:将栈中已存在的Activity移到栈顶,使其可见。 15. `FLAG_ACTIVITY_RESET_TASK_IF_NEEDED`:如果Activity在一个新任务中启动,但又可以在现有任务堆栈中找到,那么它会被置于...

    模拟Activity进出栈

    通过设置Intent的Flags,如FLAG_ACTIVITY_NEW_TASK或FLAG_ACTIVITY_REORDER_TO_FRONT,可以改变Activity的栈管理行为。 3. **Activity生命周期**:Activity的生命周期包括了onCreate(), onStart(), onResume(), ...

    安卓Android源码——Activity设置相同的action进行判断源码.zip

    如果多个Activity的Intent Filter得分相同,系统还会参考Intent的FLAG_ACTIVITY_*标志,比如FLAG_ACTIVITY_REORDER_TO_FRONT、FLAG_ACTIVITY_CLEAR_TASK等,来决定最终启动哪个Activity。 此外,`ActivityInfo`类...

    Android Activity设置相同的action进行判断源码.rar

    5. **FLAG_ACTIVITY_REORDER_TO_FRONT**: 如果目标Activity已经在栈中,此标志会将它移动到栈顶,但不调用onNewIntent()。适用于希望Activity保持状态并迅速回到前台的情况。 6. **使用Extra数据进行区分**: 即使...

    android重启程序

    4. **服务重启**:对于后台运行的服务,我们可以通过设置Intent.FLAG_ACTIVITY_REORDER_TO_FRONT,确保服务在被杀死后能重新启动。同时,需要在服务的onStartCommand()方法中返回START_STICKY或START_NOT_STICKY,以...

    android singleTask几个注意点

    有时候,开发者可能会结合使用`singleTask`和其他启动模式,例如`singleTask`与` FLAG_ACTIVITY_REORDER_TO_FRONT`,以实现更复杂的行为。 6. **生命周期回调**: 由于`singleTask`涉及到任务栈的操作,因此在`...

    android开发页面跳转

    Intent Flag可以在跳转时改变Activity的行为,例如`FLAG_ACTIVITY_REORDER_TO_FRONT`可以使已存在的Activity移动到栈顶,避免重复创建;`FLAG_ACTIVITY_SINGLE_TOP`则允许新Intent唤醒栈顶的相同Activity,而不是...

    Activity之间切换动画

    intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent, ActivityOptions.makeSceneTransitionAnimation(this).toBundle()); ``` 这里使用`...

    activity切换特效.zip

    某些Intent标志如`FLAG_ACTIVITY_CLEAR_TOP`或`FLAG_ACTIVITY_REORDER_TO_FRONT`会影响动画效果。理解这些标志如何影响Activity堆栈可以帮助优化动画。 7. **动画资源**: 动画资源通常放在`res/anim`目录下,...

    038集-Intent类的重要成员变量

    - `FLAG_ACTIVITY_FORWARD_RESULT` 用于子Activity向父Activity传递结果,而 `FLAG_ACTIVITY_REORDER_TO_FRONT` 则会将目标Activity移动到任务栈的顶部,但不创建新实例。 4. **Intent的分类操作** - **启动...

Global site tag (gtag.js) - Google Analytics