保持片段状态以及视图

时间:2015-05-07 12:28:40

标签: android android-fragments

我有三个片段。片段A-包含一个ListView,用于显示从API和片段B获取的项目列表,以显示List项目的详细信息。片段C是一个单独的片段。

片段A包含100多个项目,这些项目在从Api获取时需要一些时间。 当用户进入片段A时,将触发Api调用(获取记录),如果用户切换到片段C,则在几秒钟之后;它出现并调用片段A ondestroyView。现在当用户回到片段A时,api调用再次被触发。 我想要实现的是,如果用户回到Fragment A不应该再次发送调用,但它应该继续最后一个进程,否则片段A必须继续处理其工作流程,如果我已切换到Fragment C。

任何人都可以建议一个很好的方法来实现这个目标吗?

2 个答案:

答案 0 :(得分:0)

基本算法是:

  1. 在单独的线程中加载数据。
  2. 将其存储在db。
  3. 加载完成后,生成一个事件(例如EventBus)。
  4. 订阅此活动,并在需要时显示包含CursorAdapterCursorLoader的内容。
  5. 因此,您可以使用线程安全和配置更改安全的方式来加载,存储和显示数据,而不会阻塞主线程和不必要的服务器调用。

答案 1 :(得分:0)

获取IntentService中的数据。获取数据时触发事件。

在您的活动(片段A,B和C的父活动)上侦听事件并将获取的数据存储在您的活动中。

在您的活动中,检查片段A是否可见。如果可见,请将数据传递给您的片段。

通过这种方式,您的活动生命周期将处理数据的可用性,例如:只要您的活动处于活动状态,您就不需要再次获取数据,这正是您所希望的。

我没有对此进行测试,但我不明白为什么它不起作用。

PS;不要使用asynctasks。他们很糟糕,非常糟糕Check here why。 尝试使用Retrofit进行网络通话。