2011-06-29 64 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(); 
} 
相关问题