我有三个片段。片段A-包含一个ListView,用于显示从API和片段B获取的项目列表,以显示List项目的详细信息。片段C是一个单独的片段。
片段A包含100多个项目,这些项目在从Api获取时需要一些时间。 当用户进入片段A时,将触发Api调用(获取记录),如果用户切换到片段C,则在几秒钟之后;它出现并调用片段A ondestroyView。现在当用户回到片段A时,api调用再次被触发。 我想要实现的是,如果用户回到Fragment A不应该再次发送调用,但它应该继续最后一个进程,否则片段A必须继续处理其工作流程,如果我已切换到Fragment C。
任何人都可以建议一个很好的方法来实现这个目标吗?
答案 0 :(得分:0)
基本算法是:
因此,您可以使用线程安全和配置更改安全的方式来加载,存储和显示数据,而不会阻塞主线程和不必要的服务器调用。
答案 1 :(得分:0)
获取IntentService
中的数据。获取数据时触发事件。
在您的活动(片段A,B和C的父活动)上侦听事件并将获取的数据存储在您的活动中。
在您的活动中,检查片段A是否可见。如果可见,请将数据传递给您的片段。
通过这种方式,您的活动生命周期将处理数据的可用性,例如:只要您的活动处于活动状态,您就不需要再次获取数据,这正是您所希望的。
我没有对此进行测试,但我不明白为什么它不起作用。
PS;不要使用asynctasks。他们很糟糕,非常糟糕。 Check here why。 尝试使用Retrofit进行网络通话。