我有一個服務和一個Activity
(都作爲同一進程的一部分運行)。 根據SO回答,https://stackoverflow.com/a/29101448/1215996。它建議通過Activity
參考Service
,以便服務可以調用Activity
對象上的回調。服務和活動之間的通信
1)以這種方式進行溝通是一個好主意。這不是壞事,因爲它泄露了對活動的引用,它將避免GC,直到Service
爲止。
2)我也檢查了Messenger
可以用於來回的B/W活動和服務。 AFAIK,如果Activity
和Service
運行在不同的進程中,則應該使用這個命令。當它們作爲同一過程的一部分運行時,使用這種機制不會成爲通信b/w活動和服務的開銷嗎?
什麼是溝通的最佳方式?我的主要目標是在服務中發生某些事件時向服務提供一些消息。
如果您有本地服務使用「本地綁定服務」模式(在您發佈的SO答案中使用的模式相同) – pskink
我調用bindService()方法綁定到服務,我可以調用服務類方法。但問題是反向溝通,這是我的問題。我希望服務通知片段/活動某些事件。 –
反向通信有什麼問題?只需使用'register()'''unregister()'方法,或者使用簡單的'List'客戶端或在register()期間嘗試'android.os.RemoteCallbackList' – pskink