我有6个活动A,B,C,D,E,F。这个A是登录A活动后的登录活动我去了活动链B,C,D,E,F ..这个B,C,D,E,F活动每当用户按下后退按钮时,如果用户在打开应用程序后按下主页按钮它将再次询问密码是如何可能的话,它将返回上一个活动。请帮帮我
答案 0 :(得分:1)
您可能会在boolean
的某处保留SharedPreference
条件。在用户登录时,将其设置为true。请参阅here问题的答案How can I detect user pressing HOME key in my activity?,以检测是否按下HOME
。如果检测到HOME
密钥,请将boolean
中的Sharedpreference
设置为false
。在检测到onResume
按钮的活动的HOME
内,检查SharedPreferences中的变量值。如果为false,则可以在所有其他活动之上打开登录活动,并删除堆栈中的所有其他活动。
按“后退”按钮不需要执行任何操作。虽然如果要检测它,可以覆盖onBackButtonPressed
。
答案 1 :(得分:1)
首先,在清单中创建登录活动的launchmode singleTask。
然后在你的其余活动的onsaveInstanceState中执行以下操作:
@Override
protected void onSaveInstanceState(Bundle outState) {
// TODO Auto-generated method stub
super.onSaveInstanceState(outState);
Log.d("TAG", "onSaveInstanceState");
SharedPreferences preferences = getSharedPreferences("pref",
MODE_PRIVATE);
if (preferences.getBoolean("app", true) == true) {
Intent i = new Intent(SecondActivity.this, MainActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(i);
finish();
} else {
preferences.edit().putBoolean("app", true);
preferences.edit().commit();
}
}