按返回鍵不退出應用,而是將任務移至後台(類似音樂播放器按返回繼續播放)。
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
moveTaskToBack(true); // 將整個任務棧移至後台
return true; // 消費事件,不再傳遞
}
return super.onKeyDown(keyCode, event);
}
@Override
public void onBackPressed() {
moveTaskToBack(true);
}
音樂播放邏輯應放在 Service (前台服務) 中,Activity 僅作控制界面。按返回銷毀 Activity 不影響 Service 播放,用戶從通知欄或最近任務恢復界面。
moveTaskToBack 不銷毀 Activity,內存佔用保持,頻繁使用可能導致 OOM。finishAffinity() (API 16+) 清除任務棧。