0

林:http://www.youtube.com/watch?v=xHXn3Kg2IQE(雖然很輕微修改的修改不應該對這個問題非常相關的)。觸發一個ContentObserver不使用這裏介紹的模式改變的內容

的情況是這樣的: 活動查詢ContentProvider的一個資源。該ContentProvider的可以 immidiately目前返回的元組在本地數據庫,啓動REST方法,並從服務器返回的新數據記錄到ContentObserver。

但是,這感覺有點怪我,因爲你必須處理在2個地方的數據 - 一旦本地數據庫,並曾經爲REST方法完成時。當然,你可以創建一個方法來處理它,這有助於,但仍然? 如果我可以手動觸發ContentObserver,而不實際更改內容,則處理數據只會發生在ContentObserver中的一個地方。這可能嗎?然後

活動將查詢ContentProvider的,這將與資源從本地數據庫觸發ContentObserver。 Web服務將被查詢,一旦REST方法完成,ContentObserver將再次被觸發(因爲除了本地數據庫中已有的數據外,我們現在還有來自web服務的數據)。

如果可能的話,啓動對ContentProvider的查詢會變得有點尷尬,因爲從ContentProvider返回的遊標可能爲空/空值,但如果允許我在一個地方處理所有內容,那麼它不是可接受的嗎?

回答

2

我不完全清楚自己想要什麼,但這裏有一個猜測...

ContentResolver cr = getActivity().getContentResolver(); 

Uri uri = Uri for the content you are interested in 

cr.notifyChange(uri, null); 
+0

謝謝你,那是什麼樣的我問了。很有用。 我不過也有興趣在一個關於設計模式的討論 - 我就應該總是通過ContentObserver處理數據,使用您的解決方案時,沒有新的數據是可用的?也許這對我的應用來說太具體了。我想我需要考慮自己。 再次感謝。 – user1202032 2012-03-01 14:58:14

+0

我發現設計模式A適合我的特定應用。它允許我異步啓動一個處理所有數據操作(本地數據庫,休息方法等)的服務。一旦完成(考慮到網絡訪問等),它會觸發ContentObserver,並且該活動可以處理接收到的數據 - 可能會將其顯示爲ListVIew。考慮使用SyncAdapter(模式c),但我不需要處理用戶帳戶。還害怕SyncManager在殺死可用性時,通過在被調用時不會立即啓動SyncAdapter(在youtube vid中提及)。 – user1202032 2012-03-03 02:01:33