在回收者视图中存储异步数据

Store async data in recycler view

我有一个主 activity,我在其中使用了一个视图 pager.So 我可以在 4 个选项卡之间移动,视图寻呼机处理所有 that.One 我的选项卡扫描联系人在 phone 上获取他们的详细信息并将其显示在同一选项卡中的 recylerview 中,此任务需要很长时间,我正在异步执行此操作 task.Everything 工作正常但问题是如果我在进行此扫描时移动到另一个选项卡,则数据可能不会应用于回收站视图,因为该片段正在被销毁。 是否有解决此问题的方法,或者我应该只是阻止用户在扫描过程中移动标签(如果是这样,某种代码或代码的 link 将非常有帮助)。

我不建议您强迫用户在加载数据时停留在页面上。这听起来只会让人们感到沮丧。为此,我有一些想法可以让你的 AsyncTask 运行 保持不可见,而你的 Fragment 不可见。

首先,您可以在 ViewPager 上拨打 setOffScreenPageLimit(2)。由于您只有四个 Fragment,这应该意味着它们都存储在内存中。

viewPager.setOffScreenPageLimit(2);

另一种方法是您可以创建一个 UI-less Fragment,其唯一功能是执行您的 AsyncTask 然后,一旦它达到 onPostExecute() ,将 Cursor 结果传递给 Fragment 需要它的 interface 或某种类型的 EventBus(即 LocalBroadcastManager 或其他许多存在的优秀库之一, 比如GreenRobot的EventBus).

编辑如果你喜欢关于如何创建这样一个"worker"Fragment的信息,那么这里有一个非常好的和详细的post在 androiddesignpatterns.