2013-10-12 36 views
0

我有一個應用程序(許多活動)。我想在應用程序變爲背景時清除用戶憑據等少數值。我如何知道應用程序何時啓動?我試圖攔截主頁按鈕,但似乎我們不能這樣做。如果我調用onPause(),它會在每次從一個活動移動到另一個活動時被調用。我搜查了很多,但沒有得到任何具體的東西。當應用程序轉到背景時Android清除數據

請幫

回答

0

我認爲你有兩種方式來實現自己的目標一個是清零的onStop()你活動的狀態,其中包含您的數據和另一種方式是(你提到)追趕首頁新聞數據事件。

檢測首頁的新聞發佈會上,你應該重寫:onAttachedToWindow()

@Override 
public void onAttachedToWindow() { 
    super.onAttachedToWindow(); 
    this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);   
} 

然後清除您的數據:

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) {  

    if(keyCode == KeyEvent.KEYCODE_HOME) 
    { 

     //Put your Codes here to Clear Data 

    } 
}); 
0

這是很難用Android作爲有一個應用程序將沒有具體定義的背景。檢測主鍵是不夠的,因爲有很多其他事件會導致您的應用程序失去焦點。

例如,來電會導致您的應用程序「去背景」,但對用戶來說,這似乎並不是這種情況。

實現您想要的一種可能的方法是使用活動的OnPause和OnResume方法與應用程序類中的服務或簡單任務進行通信。 (任何獨立於你的活動的東西)。

當OnPause被調用時,啓動一個計時器。當OnResume被調用時,停止計時器。

如果定時器沒有在特定的時間段內停止,那麼你會認爲應用程序「在後臺」,並可以清除數據。

允許有足夠的時間來處理簡單的更改,例如上面的來電示例。也許一兩分鐘取決於你的情況。