问题:从长时间运行的任务到活动报告进度/完成的最佳做法是什么?当活动处于后台/方向更改时发生进度/完成报告时该怎么办?长时间运行任务,回调活动或片段
现实生活中的示例: 活动使网络调用从服务器获取数据(这可能需要10秒以上)。 完成此网络通话后,应通知活动并且活动应显示网络通话已完成。
只要应用程序保持打开状态,这很容易实现。我的问题是,如果在应用程序在后台完成网络调用时该怎么办(活动将会错过任何回调)。
我一直在看下面的方法可以做到这一点,但我不能决定该怎么做:
- 服务的滋生其中执行网络调用线程。服务绑定到活动。在网络通话完成时,向该活动提供服务回调。如果Activity在后台进行回调时处于后台(因此Activity未命中回调),Activity是否应该对Service进行轮询以获取保存的数据? (做什么,如果活动错过这个广播,因为它是在后台?)
- IntentService是广播网络时,通话结束后的数据
- 的AsyncTask,但坏就坏在活动是在后台等
我应该如何解决这个问题?
感谢您的链接。我有两个问题: 如果任务在活动在后台完成,该怎么办?那么所有的回调都会被错过,对吧?当活动在后台时,如何获取从服务器检索到的数据? 它似乎不是一个“最佳实践”使用片段运行任务? 虽然我确实看到了这个方法的重点。 编辑:我应该将数据存储在HeadlessFragment中,然后如果“TaskHasFinished”请求片段中的数据? –
@JonasJensen请参阅编辑回答你的问题。 – Nerd