我有一個服務正在運行,其中一項任務是定期從外部Web主機獲取數據。在找到新數據後,服務應更新主要活動以顯示最新文本。在更新期間,沒有必要將活動放在前臺,但是當活動恢復時,它應該反映來自服務的最新數據。更新服務中的活動數據
我目前的實現有點奇怪,我不禁想到應該有更好的方法來做到這一點。我的方法如下:
活動(MainActivity)實現自定義接口OnDataChangedListener。在MainActivity的onCreate中,它調用服務的靜態方法來註冊自己(MyService.addDataChangedListener(this))。
當服務發現數據發生變化時,它遍歷偵聽器列表並調用onDataChanged(newData)。最後,MainActivity的onDataChanged方法將更改活動的文本以反映新數據。
在onPaused中,我計劃取消註冊偵聽器,並將其重新註冊到onResume中。 onResume也將調用MyService.getDataset()以獲取恢復應用程序時的最新數據。
這種方法看起來好像在Android應用程序的生命週期中不能很好地工作。有人知道更好的方法來處理這個問題嗎? 謝謝!
有趣。我不知道如何使用廣播,因爲我只看到廣播喚醒應用程序而不是通知它。 我會嘗試這種方法,並在這裏報告。希望廣播傳送沒有太多延遲。 – Dharwin 2011-05-14 21:46:59
下面是一個例子:http://www.vogella.de/articles/AndroidServices/article.html – 2011-05-14 21:49:26
它完美的工作。謝謝您的幫助。 – Dharwin 2011-05-15 20:24:20