2011-06-29 34 views
5

Tôi đang sử dụng mã sau đây trong hoạt động của ứng dụng để ngăn ứng dụng đóng ứng dụng của tôi ở mặt sau.Ngăn nút Back đóng ứng dụng của tôi

/* 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); 

    } 

Nó không hoạt động. Ứng dụng được đặt tương thích với Android 1.6 (API cấp 4). Nhấp vào biểu tượng ứng dụng của tôi khởi động lại ứng dụng của tôi tại một hoạt động Splash (đó là chính). Làm cách nào để ngăn ứng dụng của tôi đóng lại?

Trả lời

8

Bạn đã thử thực hiện cuộc gọi super trong một khối khác để nó chỉ được gọi nếu khóa không phải là 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); 
     } 
    } 

Tuy nhiên, bạn không thể dựa vào điều này vì ứng dụng của bạn được đặt ở chế độ nền, bất kỳ lúc nào nó có thể được tái chế để hệ thống lấy lại bộ nhớ.

+0

này đã làm việc một cách hoàn hảo. Tôi biết có đặt chỗ xung quanh bằng cách sử dụng nó nhưng tôi thấy nó rất phù hợp. –

1

Thậm chí nếu bạn có thể làm điều đó, bạn cũng không nên làm như vậy. Việc ép buộc người dùng giữ ứng dụng của bạn trong bộ nhớ mọi lúc không phải là một ý tưởng hay và sẽ chỉ làm phiền họ.

10

Một giải pháp ngắn gọn hơn: -

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

Nếu cần phải điều hướng trở lại cũng như ngăn chặn từ bế mạc, sau đó trong Android WebView sử dụng này:

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

    // Otherwise defer to system default behavior. 
    super.onBackPressed(); 
} 
Các vấn đề liên quan