2011-03-23 65 views
4

單擊android上的後退按鈕時調用的函數。我的要求是當應用程序正在運行並且用戶單擊後退按鈕時,應用程序的狀態應該存儲到數據庫中,並且每當他返回到應用程序時,用戶應該能夠看到狀態。在後退按鈕單擊Android時調用的函數

通過互聯網瀏覽,我知道我們可以使用onKeyDown()函數來處理控件。但是,即使我在代碼中使用它,當我單擊後退按鈕時,該函數也不會被調用。下面是函數:

@Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     Log.d(null,"In on Key Down"); 
     if (keyCode == KeyEvent.KEYCODE_BACK) { 
      moveTaskToBack(true); 
      return true; 
     } 
     return super.onKeyDown(keyCode, event); 
    } 

請建議,如果有人一直面臨着相同/相似的場景。

回答

6

使用Activity生命週期方法來保存和恢復狀態。您可以在onPause期間保存您的狀態並在onResume中恢復。在你的活動中:

@Override 
protected void onPause() 
{ 
super.onPause(); 
    //Save state here 
} 

@Override 
protected void onResume() 
{ 
super.onResume(); 
    //Restore state here 
} 

你也可以在onStart/onStop中做到這一點。看看這裏的活動週期:http://developer.android.com/reference/android/app/Activity.html

+0

嗨,感謝您的答覆內返回錯誤。我在這裏發佈之前嘗試覆蓋onPause(),但不管怎樣,只要按下後退按鈕,函數就不會被調用。所以我找到了一個替代方案。 – 2011-03-23 18:19:43

0

您不必重寫後退按鈕行爲來保存活動的狀態。

只需覆蓋onPause()並保存您想要的任何持久狀態。

0

保存更改SharedPreferences和更改提交回你SQLite數據庫。將它們加載到onResume

爲了保存您的活動的當前狀態(例如,用戶打開了哪個標籤頁),請使用onSaveInstance(Bundle outState)和傳送給您onCreate (Bundle savedInstanceState)以存儲和檢索此信息。

13

當您按下後退按鈕時調用的活動函數是onBackPressed。

void onBackPressed() 當活動檢測到用戶按下後退鍵時調用。

給予好評,如果你來到這裏,這和不是專爲節能狀態:P

0

更改找回狀態

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    Log.d(null,"In on Key Down"); 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
     moveTaskToBack(true); 
     return false; 
    } 
    return super.onKeyDown(keyCode, event); 

}