我目前有一个活动,当它显示时,通知也会显示在通知栏中。
这样当用户按下 home 并且 Activity 被推到后台时,他们可以通过 Notification 回到 Activity。
当用户按下后退按钮时会出现问题,我的 Activity 被破坏但通知仍然存在,因为我希望用户能够按下后退但仍然能够通过通知进入 Activity。但是当一个用户尝试这个时,我得到空指针,因为它试图开始一个新的活动,而不是带回旧的活动。
所以基本上我希望后退按钮与主页按钮完全相同,这是我迄今为止尝试过的方式:
@Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (Integer.parseInt(android.os.Build.VERSION.SDK) < 5 && keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { Log.d("CDA", "onKeyDown Called"); onBackPressed(); } return super.onKeyDown(keyCode, event); } public void onBackPressed() { Log.d("CDA", "onBackPressed Called"); Intent setIntent = new Intent(Intent.ACTION_MAIN); setIntent.addCategory(Intent.CATEGORY_HOME); setIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(setIntent); return; }
但是上面的代码似乎仍然允许我的 Activity 被销毁,当按下后退按钮时,如何阻止我的 Activity 被销毁?
删除您的关键侦听器或true在您拥有KEY_BACK.
true
KEY_BACK
您只需要以下内容即可捕获返回键(确保不要调用 super in onBackPressed())。
onBackPressed()
此外,如果您打算让服务在后台运行,请务必查看startForeground()并确保有持续的通知,否则 Android 会在需要释放内存时终止您的服务。
startForeground()
@Override public void onBackPressed() { Log.d("CDA", "onBackPressed Called"); Intent setIntent = new Intent(Intent.ACTION_MAIN); setIntent.addCategory(Intent.CATEGORY_HOME); setIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(setIntent); }