我确信这个问题会被问到很多,但我正在寻找最简单的解决方案,考虑到Android最佳实践(没有hacky清单试图保留单个Activity实例)。另外,我不是在寻找保留Fragment
解决方案。
我正在寻找Activity
中最简单的方法来启动后台任务并提供回调函数。如果重新创建Activity
(配置更改),那么我希望旧活动释放引用,并将回调附加到新的Activity实例。
最后,我不想再次执行操作。意思是,如果它是一些HTTP资源,它应该被缓存,以便不再浪费地运行操作。
谢谢!
答案 0 :(得分:0)
首先,您需要将任务执行和活动(UI)分离。要实现此目的,您可以使用UI发送给某些task executor
的事件。基本思想如下:
onResume
时,您会注册活动以接收事件。onStop
方法,您可以取消注册活动以接收新活动。所以事件没有交付。onResume
方法下载。如果已下载,则显示,如果没有,则等待。详细说明如下:http://www.mdswanson.com/blog/2014/04/07/durable-android-rest-clients.html。
答案 1 :(得分:0)
我的经验最简单的方法是使用AsyncTask(http://developer.android.com/reference/android/os/AsyncTask.html)。但是,配置更改后可能会爆炸。所以你应该将AsyncTask附加到“HeadlessFragment”。对于Fragment,您可以启用“setRetainInstanceState”,以便不会重新创建片段。然后在配置更改后,您可以再次附加到该片段。