14.清空栈的使用

参考:https://www.cnblogs.com/itrena/p/7434174.html
https://blog.csdn.net/csdn_of_coder/article/details/76343031

1.用FLAG_ACTIVITY_CLEAR_TOP 实现清空Activity栈:

能够清空此栈之前的Activity,清空在即将跳转的activity之前的栈,所以此activity要设置成singline模式。
跳转时候把他之前的栈都清掉

   /**
     * 清空跳转Activity之前的栈
     *
     * @param clz
     */
    public void startClearTopActivity(Class<?> clz) {
        startActivity(new Intent(BaseActivity.this, clz).setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));
    }

2.FLAG_ACTIVITY_NO_HISTORY

在AndroidManifest.xml设置Activity的属性noHistory = true,
当启动新的Activity后之前的Activity不会保存在ActivityTask中,可以满足你的需求。

 <activity
            android:name=".activity.ServiceActivity"
            android:noHistory="true" />

 Intent.setFlags(FLAG_ACTIVITY_NO_HISTORY)

栈中完全不存放任何activity,每一个都是新生成的。

3.FLAG_ACTIVITY_CLEAR_TASK:

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);

这个标记,将会导致任何用来放置该activity的已经存在的task里面的已经存在的activity先清空,然后该activity再在该task中启动,也就是说,这个新启动的activity变为了这个空task的根activity.所有老的activity都结束掉。该标志必须和FLAG_ACTIVITY_NEW_TASK一起使用。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容