0

我想遵循這個很好的可用性模式,其中應用程序離線存儲數據以獲得更快的響應,並在線上獲取新數據時更新它。我使用LoadersLoaderManagerLoaderManager獲取數據離線,然後在線

現在,用Loaders實現上述方法的正確方法是什麼?

目前我使用兩種方法,它們都有其缺點,並且通常不是很優雅。

  1. 在代替的SQLite
  2. 兩個獨立AsyncTaskLoaders應用上下文存儲數據 - offlineLoaderonlineLoader。首先獲取從SQLite數據庫中的數據,並立即顯示了它,如果它的存在,第二個從外部服務器加載數據,將其寫入數據庫(用於offlineLoader),並取代了離線數據

我會真正想要的是:

單個Loader將數據脫機並將其返回給LoaderManager,但之後繼續工作並在準備就緒時返回新的在線數據。所以它應該返回兩次 - 甚至可能嗎?

+0

現在我想到了,應該重寫'onDeliverResult()'開始下載在線數據...有人告訴我,如果我錯了,但我會嘗試這種方法 –

回答

1

的解決方案是使用ContentProvider s的Loader■裝載數據,用戶界面和Service小號下載數據,將其推到數據庫中(並通知ContentProvider和應用程序的其餘部分,即它已經改變)。