2012-07-19 55 views
1

所以我有一個Web應用程序,它提供了一些數據...可以說如果我查詢http://www.myserver.com/?id=Apples應用程序返回當前蘋果的價格(還有許多其他應用程序知道的水果)。我將我的數據庫中的水果名稱和價格保存在表格中。我做的事情是在我的主要活動(開始時從數據庫中讀取它們)中顯示所有水果和當前價格的列表,但也爲用戶提供了在屏幕上放置小部件的能力,該小部件顯示1個水果的價格(假設小1x1部件)。更新窗口小部件和活動的數據

這就是故事的智慧......我想要做的事情是不斷在我的數據庫中更新水果價格(讓我們說他們每30分鐘)。我還希望我的小部件知道數據庫何時更新以顯示新價格)。

什麼是最好的模式來實現這(這可能很常見)... AsyncTask,Service,Service + ALarm等所有其他組合?

回答

0

你說得對,這個問題確實經常出現。使這項工作最快的方法是使用IntentService(它會自動排隊並在單獨的線程上運行您的任務)以及觸發它的警報。

更完整的解決方案是使用AccountManager/SyncAdapter/ContentProvider組合。 SDK版本中包含的API示例包含一個示例;此外,this blog post似乎很有用。

我想補充一點,因爲這屬於REST風格的webservice類別,您可能會發現Google I/O video about developing RESTful applications非常有用。

+0

如果我使用IntentService&Alarm組合...如何確保報警能夠重新啓動,或者更好地說在啓動時啓動(即使用戶沒有啓動應用程序...我們仍然需要更新小部件)? – Veles 2012-07-19 08:49:22

+0

您應該設置一個'BroadcastReceiver'來接收'android.intent.action.BOOT_COMPLETED'事件。這將在設備重啓時觸發。 – Greyson 2012-07-19 18:57:38