Activity启动模式之FLAG_ACTIVITY_CLEAR_TOP

Activity启动模式之FLAG_ACTIVITY_CLEAR_TOP关于Android的Intent.FLAG_ACTIVITY_CLEAR_TOP如果设置,并且这个Activity已经在当前的Task中运行,因此,不再是重新启动一个这个Activity的实例,而是在这个Activity上方的所有Activity都将关闭然后这个Intent会作为一个新的Intent投递到老的Activity(现在位于顶端)中。例如,假设一个Task中包含这些Act…

大家好,又见面了,我是你们的朋友全栈君。

关于Android的Intent.FLAG_ACTIVITY_CLEAR_TOP

如果设置,并且这个Activity已经在当前的Task中运行,
因此,不再是重新启动一个这个Activity的实例,而是在这个Activity上方的所有Activity都将
关闭然后这个Intent会作为一个新的Intent投递到老的Activity(现在位于顶端)中。 例如:假设
一个Task中包含这些Activity:A,B,CD。如果D调用了startActivity(),并且包含一个指向
ActivityB的Intent,那么,CD都将结束,然后B接收到这个Intent,因此,目前stack的状况是
A,B。 上例中正在运行的Activity B既可以在onNewIntent()中接收到这个新的Intent,
也可以把自己关闭然后重新启动来接收这个Intent。


如果它的启动模式声明为“multiple”(默认值),并且你没有在这个Intent中设置FLAG_ACTIVITY_SINGLE_TOP
标志那么它将关闭然后重新创建;对于其它的启动模式,或者在这个Intent中设置FLAG_ACTIVITY_SINGLE_TOP
标志,都将把这个Intent投递到当前这个实例的onNewIntent()中
这个启动模式还可以与FLAG_ACTIVITY_NEW_TASK结合
起来使用用于启动一个Task中的根Activity,它会把那个Task中任何运行的实例
带入前台,然后清除它直到根Activity。这非常有用,例如,当从Notification Manager处启动一个
Activity。
假如有以下3个Activity
A - B - C
当 B - A - B 跳转的时候,使用Intent的FLAG_ACTIVITY_CLEAR_TOP会让第一个B和第二个A,destory掉
但是当B - A - C跳转的时候不会调用B和A的destory
  • 针对该Intent配置的目标为FLAG_ACTIVITY_CLEAR_TOP, 表示如果在Activity栈中存在该Activity对象则不再创建对象,结束该对象之上的所有Activity回到该Activity上

  • 上面当A跳C的时候不满足此条件。
    当然如果你想实现这个效果可以使用:
    it.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_CLEAR_TASK);

与君共勉

我要一步一步往上爬
在最高点乘着叶片往前飞
任风吹干流过的泪和汗
我要一步一步往上爬
等待阳光静静看着它的脸
小小的天有大大的梦想
我有属于我的天
任风吹干流过的泪和汗
总有一天我有属于我的天
这里写图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/160773.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号