2016-01-08 27 views
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鍵,應用程序將退出。

回答

0

當您按HOME調用onPause()然後onStop()。

所以你可以把保持發生了什麼的軌道成員變量:

@Override 
protected void onPause() { 

    mIsPause = true; 

    super.onPause(); 
} 

@Override 
protected void onStop() { 
    Log.i("ws", "---->>SmarterActivity onStop"); 

    if(!mIsPause) 
     clearAutoStart(); 

    super.onStop(); 
} 
+0

我不想的onStop()來清除數據,我要清除的數據時,該應用程序強制關閉。 –

+0

記住,不總是執行:if(!mIsPause) clearAutoStart(); –