0
我想實現此功能:如果用戶未選中自動登錄複選框,則在應用程序正常退出或強制關閉時清除登錄用戶信息並註銷(清理存儲器)。強制關閉應用程序時註銷
我編寫代碼clearAutoStart()
來清除finish()
和OnDestory()
中的用戶信息。 當用戶按下兩次按鈕,finish()
將執行,並將註銷成功。但如您所知,如果申請部隊關閉,OnDestory()
將不會一直執行。所以在這種情況下,它不會註銷成功。
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if (keyCode == KeyEvent.KEYCODE_BACK) {
exitBy2Click(); //quit normal
}
return false;
}
private static Boolean isExit = false;
private void exitBy2Click() {
Timer tExit = null;
if (isExit == false) {
isExit = true;
Toast.makeText(this, "press again to quit", Toast.LENGTH_SHORT).show();
tExit = new Timer();
tExit.schedule(new TimerTask() {
@Override
public void run() {
isExit = false;
}
}, 2000);
} else {
finish();
System.exit(0);
}
}
@Override
protected void onDestroy() {
clearAutoStart();
super.onDestroy();
}
@Override
public void finish() {
clearAutoStart();
super.finish();
}
@Override
protected void onStop() {
Log.i("ws", "---->>SmarterActivity onStop");
super.onStop();
}
public void clearAutoStart() {
RememberUser rememberUser = RememberUser.getInstance();
if (rememberUser.getIsAutoStart() == false) {
Log.i("ws", "---->>clearAutoStart getIsAutoStart false ");
UserLocalStore userLocalStore = UserLocalStore.getInstance();
userLocalStore.setUserLoggedIn(false);
userLocalStore.clearUserData();
Log.i("ws", "---->>clearAutoStart getIsAutoStart false OK ");
} else {
Log.i("ws", "---->>clearAutoStart getIsAutoStart true ");
}
}
我嘗試添加clearAutoStart()
在onStop()
,但這意味着如果我按HOME鍵,應用程序將退出。
我不想的onStop()來清除數據,我要清除的數據時,該應用程序強制關閉。 –
記住,不總是執行:if(!mIsPause) clearAutoStart(); –