我在申请开始时有一个登录视图 . 登录此视图时手动完成(即在代码中调用 finish()
) . 这样,当用户想要退出应用程序时,用户不必在登录页面之后按下后退按钮 .
现在我想在应用程序中有一个 logout
按钮 . 这会调用登录视图(意图删除任何以前存储的登录凭据 - 即模拟注销) .
我需要做的是清除此意图上的向后导航堆栈,否则用户仍然可以在最初导航时按下并查看应用程序 .
现在, Intent.FLAG_ACTIVITY_CLEAR_TOP
不起作用,我推测是因为我 finish()
登录活动意味着该活动不在后台堆栈中 . 我也在使用 Intent.FLAG_ACTIVITY_NEW_TASK
,它仍然可以按下后退按钮并向后导航他们应该登录访问的活动 .
所以我需要做的是创建一个Login活动的实例,并将其作为我的应用程序的新 root
活动 .
我怎样才能做到这一点?
谢谢
2 回答
尝试
这是来自一个适合我的应用程序..
您应该将登录状态保存到本地数据存储(您可以使用SharedPreferences,或Application类或DB) .
然后,在您的activity的onStart()方法中,您应该检查登录状态,并向用户显示相应的UI .
换句话说,跟踪应用程序中某处的登录状态 - 然后每次显示“活动”时检查该状态,以确定是否应显示登录视图 .
无论活动的切入点如何,您都可以控制向用户显示的内容 .