【问题标题】:Clear android stack and always start app on certain activity清除 android 堆栈并始终在某些活动上启动应用程序
【发布时间】:2014-05-06 03:35:56
【问题描述】:
我有一个应用程序,它受密码保护以阻止未经授权的数据访问。
我需要问的是:
当应用程序使用主页按钮关闭,然后重新打开时,我需要它进入 LoginActivity,我想我已经使用 android:launchMode="singleTask" 对其进行了排序
但是如果我按下后退按钮,它会带我回到菜单,而无需再次登录 - 所以它会绕过密码?
你能帮忙吗?
【问题讨论】:
标签:
android
passwords
android-activity
stack
【解决方案1】:
创建一个自定义应用程序类,带有一个指示用户是否登录的标志。
public class MyApplication extends Application {
boolean loggedIn;
}
然后,您可以在您的活动中检查用户是否已登录。如果未登录,请将其返回到登录活动。
protected void onCreate(Bundle savedInstanceState) {
MyApplication app = ((MyApplication) getApplicationContext());
if (!app.loggedIn) {
Intent intent = new Intent(this, LoginActivity.class);
//go to old activity
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
}
}
【解决方案2】:
在您的活动中,在按主页进入后台之前,设置用户已注销或清除会话的标志。
然后 onResume 你的活动,检测用户的标志是否仍然登录或会话仍然有效。如果无效。然后只需发送一个意图来打开您的登录活动。
因此,即使您按下返回,恢复的活动也会验证用户是否仍然登录或会话仍然有效。