加载器管理器离线获取数据,然后在线获取数据



我想遵循这种不错的可用性模式,其中应用程序离线存储数据以加快响应速度,并在在线获取新数据时对其进行更新。

我将LoadersLoaderManager一起使用.

现在,使用Loaders实施上述方法的正确方法是什么?

目前,我使用两种方法,它们有其缺点,并且通常不是很优雅。

  1. 将数据存储在应用程序上下文中而不是 SQLite 中
  2. 两个独立的AsyncTaskLoaders - offlineLoaderonlineLoader。第一个从SQLite数据库中获取数据并立即显示它,如果它在那里,第二个从外部服务器加载数据,将其写入数据库(对于offlineLoader)并替换离线数据

我真正想要的是:

单个加载器,它脱机获取数据并将其返回到 LoaderManager,但之后继续工作并在准备就绪时返回新的联机数据。所以它应该返回两次 - 甚至可能吗?

解决方案是使用 ContentProvider s Loader将数据加载到 UI 并Service下载数据并将其推送到数据库中(并通知ContentProvider和应用程序的其余部分,它已被更改)。

最新更新