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

Android BroadcastReceiver 與 WakefulIntentService:無需 finish() 結束

     編輯:程式設計綜合問答

核心概念

finish() 是 Activity 的方法,用於結束 Activity 實例。

  • BroadcastReceiver:無生命週期方法,onReceive() 執行完即視為結束,系統自動回收。
  • Service (含 WakefulIntentService):需呼叫 stopSelf() 或 stopService() 停止,或由 WakefulBroadcastReceiver 完成喚醒鎖釋放後自動停止。

WakefulIntentService 運作機制

  1. WakefulBroadcastReceiver 接收廣播,取得喚醒鎖
  2. 啟動 WakefulIntentService(IntentService 子類)
  3. onHandleIntent() 執行耗時任務(下載資料)
  4. 任務結束,WakefulIntentService 內部呼叫 completeWakefulIntent() 釋放鎖並 stopSelf()

結論

完全不需要也不應該呼叫 finish()。正確做法是確保 Service 任務完成後自動停止,或在 Receiver 中啟動 Service 後直接返回。

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