2012-10-10 47 views
0

我有了一個後臺服務,輪詢新信息的Web服務,並將其寫入到我的應用程序SQLite數據庫Android應用程序。該應用程序還有一個列表活動,顯示來自此sqlite數據庫的數據。自動更新時,SQLite數據庫改變

基本上我想要列表自動更新,而看它是否有新的數據進入從服務寫入它的SQLite數據庫。我可以提供各種刷新按鈕,但它會自動更新。有沒有簡單的方法來做到這一點?服務是否應該激發listactivity訂閱的事件並使適配器無效?或者有沒有辦法讓適配器基於遊標或其他東西,並在底層數據發生變化時自動更新?試圖在架構上考慮這一點,並希望獲得最好和最可維護(並且快速開發)的方法。我很好奇,如果我錯過了一個可能會讓這更容易的可能性。

順便說一句,我使用的是單聲道的Android(公司政策,不是我的選擇)。

+0

反向ajax也許? (我的意思是輪詢更新)(不知道如果適用) – keyser

+0

進一步的問題是,使用服務來不斷地輪詢web服務並更新本地sql數據庫的正確方法?我們希望通知面板在運行時發出持久通知。以及。有沒有更好的方法來做到這一點? – Biojayc

+0

我不知道,sry:p – keyser

回答

1

基本上我希望列表自動更新,同時看它,如果新的 數據從服務寫入到它的sqlite數據庫進入。

您可以實現動態註冊BrodcastReceiver(在onResume回調),在您的Activity包含列表,可能聽一個自定義廣播。當這BroadcastReceiver接收到自定義廣播時,您將更新遊標,調用notifyDataSetChanged,換句話說,重新刷新列表。您的Service將在數據庫中插入新值,並在完成該任務後可以發送廣播,您的自定義廣播將通知感興趣的觀察員新數據可用。如果活動處於前臺,這將觸發Activity中的接收器。

我不知道Mono爲Android給你一些代碼,但你應該能夠履行因上述想法的東西。

+0

謝謝,這聽起來像我想要的。 Android的Mono基本上是一樣的東西,只是很小的變化。我已經在java中編寫了android應用程序,所以我很熟悉它。只是不使用服務和基於處理來更新列表。我會實現這一點,然後讓你知道它是如何發生的。 – Biojayc

+0

這就是我最終做的。謝謝! – Biojayc

0

您可以使用Handler類更新您的列表。當有新數據時,您可以從後臺服務向您的活動發送消息,並在Handler類的handleMessage()方法中更新您的列表。