2

flag_activity_clear_top(为什么有时候启动Activity需要加FLAG)

  Activity intent中经常使用的FLAG_ACTIVITY_CLEAR_TOP,它的作用相当于加载模式中的SingleTask。使用这个标记启动一个Activity时,它会将要启动的Activity之上的所有Activity都弹出栈空间。举个例子,假设当前栈

  Activity intent中经常使用的FLAG_ACTIVITY_CLEAR_TOP,它的作用相当于加载模式中的SingleTask。使用这个标记启动一个Activity时,它会将要启动的Activity之上的所有Activity都弹出栈空间。举个例子,假设当前栈中的情况是A、B、C、D,这个时候从D中跳转到B,使用FLAG_ACTIVITY_CLEAR_TOP标记启动,那么栈中的情况就会变成A、B。

  另外一个常用的标记是FLAG_ACTIVITY_REORDER_TO_FRONT,它的效果和FLAG_ACTIVITY_CLEAR_TOP类似。当在A、B、C、D这样的正常启动情况下,如果在D中再次启动B,不管B有没有使用FLAG_ACTIVITY_REORDER_TO_FRONT启动,结果都会变成A、C、D、B。这个标记的作用是将要启动的Activity移到栈顶。

  有一个标记需要特别注意,那就是FLAG_ACTIVITY_BROUGHT_TO_FRONT。网上很多人对它的描述是误导性的。实际上,它的作用是将要启动的Activity拿到任务栈的最顶端,而不会启动新的Activity。举个例子来说,我现在有一个A,我在A中启动B,并在A的Intent中添加了FLAG_ACTIVITY_BROUGHT_TO_FRONT标记。这样启动的B会在任务栈中位于最顶端。假设在B中再次启动C、D(正常启动)。如果此时在D中再启动B,那么最后的栈情况会是A、C、D、B。

  另外一个常用的标记是FLAG_ACTIVITY_NO_HISTORY,顾名思义,用这个标记启动的Activity一旦退出,就不会存在于栈中。举个例子来说,假设当前栈中的情况是A、B、C。在C中使用FLAG_ACTIVITY_NO_HISTORY标记启动D,然后D再启动E,这个时候栈中的情况就变成了A、B、C、E。

  综上所述,不同的FLAG标记在Activity intent中的使用,能够灵活控制Activity的启动方式和任务栈的行为。不过大家在使用的时候要注意理解每个标记的具体含义,避免产生误解。希望以上解释能够帮助大家更好地理解和应用FLAG_ACTIVITY_CLEAR_TOP以及其他相关标记。

本文来自网络,不代表本站立场。转载请注明出处: https://tj.jiuquan.cc/a-2504771/
1
上一篇iframe滚动条(前端-解决IE浏览器下iframe中出现多余的滚动条问题)
下一篇 microsoft surface book(官网为啥微软book3不卖了)

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: alzn66@foxmail.com

关注微信

微信扫一扫关注我们

返回顶部