我想使用IntentService作爲應用程序init組件。我希望它能夠接收到這個意圖,在調用onConnected()之後調用Google Play Services並做一些後臺工作。就像谷歌的教程顯示的活動一樣。 使用IntentService來完成這種工作是否安全? 我想知道,因爲onHandleIntent只是幾行代碼,所有的工作都必須在onConnected調用之後完成。所以 - 我理解它是正確的,在完成onHandleIntent之後,IntentService將被銷燬並且不會執行任何操作|來自回撥服務的NPE將被拋出? 只要調用onConnected,是否有任何可能讓IntentService保持活動狀態,還是應該使用某種BroadcastReceiver + Service模式?IntentService註冊回調
1
A
回答
3
使用IntentService做這種工作是否安全?
否。一旦onHandleIntent()
返回,如果在此期間沒有收到新命令,則服務將被銷燬。試圖從IntentService
嘗試執行異步操作是不安全的,因爲當操作完成時服務不僅不可用,而且可能終止整個進程(與任何後臺進程一樣,尤其是沒有運行服務的進程)。
我應該使用一些BroadcastReceiver + Service模式嗎?
我不知道BroadcastReceiver
部分,但您肯定歡迎使用常規Service
。工作完成後,請務必致電stopSelf()
。
相關問題
- 1. 在IntentService中取消註冊BroadcastReceiver
- 2. GCM IntentService註冊ID每次都不同
- 3. 觀察與註冊回調
- 4. 註冊回調函數
- 5. 取消註冊通過register_callback()註冊的回調?
- 6. RMI問題,回調註冊失敗
- 7. 黑莓:的Sybase(SUP):LoginToSync:註冊回調
- 8. 註冊回調URL移動API
- 9. 註冊回調時不輸出
- 10. 事件處理C#/註冊回調
- 11. 護照註冊成功回調
- 12. wirecloud/fiware「未註冊的回調」,但回調函數實現
- 13. 在IntentService中註冊的監聽器只接收一次通知
- 14. IntentService未從清單註冊中獲取意圖
- 15. 從IntentService調用時,HttpURLConnection返回404
- 16. 廣播接收器,IntentService和GPS回調
- 17. 如何取消註冊使用TCL文件事件註冊的回調?
- 18. 如何註冊ColdFusion回調並從Java類中調用它?
- 19. 贖回類別未註冊
- 20. Chrome註冊返回主頁
- 21. 註冊用戶返回dd
- 22. 從webview註冊PHP回顯
- 23. 註冊gcmregistrar.getregistrationid返回空ID
- 24. IntentService不被調用
- 25. 註冊表值調試
- 26. 調試註冊錯誤
- 27. 調解員沒有註冊
- 28. 註冊表格返回你已經註冊的用戶
- 29. $ _註冊與註冊狀態變量返回
- 30. 註冊,首先註冊返回行存在?
感謝您試圖從IntentService執行異步操作是不安全的。我正在拼命尋找某個地方。 –
@VirendraSingh:是的,無論是使用「IntentService」和同步操作,還是使用「服務」,異步操作和自己的邏輯在完成所有背景調用時調用stopSelf()。 – CommonsWare