我試圖使用Activity-Service-Messenger的模式來交流我的活動和服務。 (如在這裏解釋http://viktorbresan.blogspot.mx/2012/09/intentservice-and-inter-process.html)基本上它說我應該在我的Activity中創建一個Handler,然後創建一個Messenger並通過putExtra()發送到我的服務。該服務然後將郵件發送到使用Messenger的活動。問題與android.os.Messenger和android.os.Handler與輪換
我的問題是,如果我旋轉模擬器,與信使相關的處理程序保存到銷燬活動的參考。這導致不刷新新活動的界面。我試圖把Messenger放在onSaveInstanceState()中。事件我可以保存信使,處理程序仍然參考我過去的活動,我無法找到一種方法來從信使中檢索我的處理程序來設置新的活動。
編輯:
進出口避免使用:
機器人:configChanges = 「方向| keyboardHidden」
onRetainNonConfigurationInstance()
編輯:
我以前用單的hALR的想法,並保持處理器有。它的工作非常好,儘管我可以看到這種模式意味着仔細清理單例中的引用。
最後也即時測試上,是由阮的還評論
您的服務是一項意向服務嗎? – 2013-05-12 16:43:10
@Hoan Nguyen:是的。我一直在測試不同的方式來溝通IntentService和活動。我嘗試過活動服務廣播模式,但我擔心信號到達時,我unregisterReceiver()。現在我正在試驗使用Singleton的HalR想法的activity-service-messenger-singleton,它完全改變了我的範例。我認爲它對使用單例非常有幫助,實際上我正在考慮一個活動 - 服務 - 廣播 - 單例模式的想法,所以我可以解決我首先關心的unregisterReceiver()問題。 – user1546652 2013-05-12 17:11:19
爲什麼不使用常規服務而不是意向服務? – 2013-05-12 17:15:38