首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android Back 鍵返回桌面而非銷毀 Activity:啟動 Home Intent 保持後台運行

     編輯:程式設計綜合問答

需求

音樂播放器按 Back 鍵應像 Home 鍵一樣**返回桌面、應用保持後台播放**,而非銷毀 Activity 導致播放異常 (進度條錯亂、雙曲同時播放)。

解決方案:啟動 Home Activity

@Override
public void onBackPressed() {
    Intent homeIntent = new Intent(Intent.ACTION_MAIN);
    homeIntent.addCategory(Intent.CATEGORY_HOME);
    homeIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(homeIntent);
    // 不呼叫 super.onBackPressed(),避免 finish()
}

關鍵點

  • Intent.ACTION_MAIN + CATEGORY_HOME:系統桌面啟動意圖。
  • FLAG_ACTIVITY_NEW_TASK:非 Activity 上下文啟動必加。
  • **不呼叫 `super.onBackPressed()`**,阻止預設 `finish()` 行為。

播放器架構建議

  1. 前台服務:`startForeground()` + 通知欄控制,保證播放不被系統殺死。
  2. MediaSessionCompat:統一處理播放狀態、鎖屏控制、耳機按鍵、Google Assistant 整合。
  3. 生命週期分離:播放邏輯在 `Service`,UI 僅作控制器,Activity 銷毀不影響播放。
  4. 進度同步**:`Handler` 定時發送進度廣播 / `LiveData` / `Flow` 更新 UI,Activity 重建時從 Service 取得最新進度。

避免雙曲同時播放

確保 `MediaPlayer`/`ExoPlayer` 實例**單例**或由 Service 獨佔管理,`onBackPressed` 僅隱藏 UI,不重建播放器。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved