2011-06-29 137 views
5

我在應用程序的活動中使用以下代碼以防止它關閉我的應用程序。防止後退按鈕關閉我的應用程序

/* Prevent app from being killed on back */ 
    @Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 

     // Back? 
     if (keyCode == KeyEvent.KEYCODE_BACK) { 
      // Back 
      moveTaskToBack(true); 
     } 

     // Return 
     return super.onKeyDown(keyCode, event); 

    } 

它不起作用。該應用程序設置爲Android 1.6(API級別4)兼容。點擊我的應用程序圖標,在Splash活動(這是Main)重新啓動我的應用程序。我怎樣才能防止我的應用程序關閉?

回答

8

您是否曾嘗試將super調用放入else塊中,因此只有在密鑰不是KEYCODE_BACK時纔會調用它?

/* Prevent app from being killed on back */ 
    @Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 

     // Back? 
     if (keyCode == KeyEvent.KEYCODE_BACK) { 
      // Back 
      moveTaskToBack(true); 
      return true; 
     } 
     else { 
      // Return 
      return super.onKeyDown(keyCode, event); 
     } 
    } 

坦率地說,雖然,你不能依靠這個,因爲一旦你的應用程序放置在後臺運行,隨時可能被再利用系統回收內存。

+0

這完美地工作。我知道有關於使用它的保留,但我發現它非常合適。 –

1

即使你能做到這一點,你也不應該這樣做。強制用戶始終將您的應用程序保存在內存中不是一個好主意,只會讓他們煩惱。

10

一個更簡潔的解決方案: -

@Override 
public void onBackPressed() { 
    // do nothing. We want to force user to stay in this activity and not drop out. 
} 
0

如果必須返回,以及從收盤預防,那麼在Android的WebView中使用:

@Override 
public void onBackPressed() { 
    if (mWebView.canGoBack()) { 
     mWebView.goBack(); 
     return; 
    } 

    // Otherwise defer to system default behavior. 
    super.onBackPressed(); 
} 
相關問題