我一直在關注Virgil在Google I/O上關於REST大量應用程序的演示。服務中的數據庫調用
Google I/O 2010 - Android REST client applications
雖然記事本教程使得數據庫直接從用戶界面層調用,維吉爾表明在一個服務使數據庫調用。
目前,我的Activity的onCreate方法使用擴展的ContentProvider訪問SQLite數據庫以查詢附加到Activity的ListView的Cursor。
我想將此代碼移入服務。很簡單。我的問題是,將光標轉移回UI層的適當方式是什麼?我看到了很多提出的問題,似乎總有人提出有更合適的方法來做到這一點。那是什麼?
更具體地說,我到目前爲止已經認識到Activity應該註冊爲某種監聽器。當在服務中檢索到遊標時,會向UI層設置通知以訪問它。服務在哪裏推動它,以便活動可以抓住它?
此外,我認爲的體系結構是有一個擴展的服務,這是由活動調用。在本服務中,數據庫事務將通過使用擴展的ContentProvider進行,任何偵聽活動都將被通知,並且線程將啓動以打擊Web服務。所以,我有1個擴展的服務,1個擴展的ContentProvider和幾個擴展的線程用於不同的Web服務。這看起來可以接受嗎?
再次觀看視頻,看起來Virgil建議在Activity和Service之間建立一個叫做「Service Helper」的Singleton層。從這個角度來看,我假設在這個Singleton中有各種ListActivities的Cursor對象?一旦服務完成檢索並將光標放入服務助手Singleton中,活動會被通知來獲取它?我不太確定這一點,因爲他提到使用活頁夾回調來通知服務助手。爲什麼需要一個可以被引用的單例的回調? – Andrew 2010-08-26 15:45:08