Android退出登录,清空原任务栈

在项目中要实现用户退出登录的功能,当用户点击退出登录按钮后,跳转到登录页面的 Activity ,直接用 startActivity() 跳转,点击返回键后仍会回到退出前的 Activity 。

如果使用下面这句代码给 intent 设置 Flag

intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

在第一次登录时有效,因为用户第一次登录时会在登录页面输入账号密码进行登录,然后跳转到主页面。这样在退出登录时,会回到之前经过的登录 Activity ,任务栈会将登录页面
Activity 之上的 Activity 全部清空,按返回键不会回到主页面。
但是在用户已经登录过之后,由于账号密码已经保存,不需要再次输入进行登录,不会经过登录 Activity , 这样在退出登录后按返回键仍会返回到主页面。

使用 FLAG_ACTIVITY_CLEAR_TASK , FLAG_ACTIVITY_NEW_TASK 即可解决。代码如下:

intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
注意是 addFlags() 不是 setFlags()

谷歌官方文档提到, Intent.FLAG_ACTIVITY_CLEAR_TASK 要起作用,必须和 Intent.FLAG_ACTIVITY_NEW_TASK 配合使用。
这两个 Flag 可以将原有任务栈清空,并将 intent 的目标 Activity 作为任务栈的根 Activity 。任务栈的 Id 没有变,如下所示,也就是说,并没有开辟新的任务栈。

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

相关阅读更多精彩内容

友情链接更多精彩内容