有没有办法确定片段是否被永久销毁,即将来是否会重建?
我需要知道何时应该销毁与该片段相关的网络任务。
答案 0 :(得分:2)
应该有效的方法是在片段getActivity().isChangingConfigurations()
中调用onDestroy()
。
答案 1 :(得分:0)
如果任务与片段相关联,则应在片段的onDestroy
方法中将其销毁。系统假定一旦该方法返回,所有片段的资源都已被清除,因此您应该继续进行所需的清理。
如果将来重新创建片段,它将是一个全新的片段,因此无论如何都可能需要一个全新的网络任务。
编辑: 如果由于配置更改(例如屏幕旋转)而导致活动被销毁并重新创建时,您希望工作在后台继续,则可以将片段设置为不被销毁。你需要做两件相对简单的事情:
setRetainInstance(true)
以防止片段与活动一起被销毁。在配置更改后重新创建活动时,将重新附加保留的片段。同时它可以继续后台处理。答案 2 :(得分:0)
这将取决于您如何创建和设置片段。检查您的片段是否被永久销毁的简单方法是添加一个Toast或其他类型的通知/标志,您可以在片段的onDestroy()
方法中查看。如果您看到如果设置了标志的吐司,那么您就知道片段已被破坏。
答案 3 :(得分:0)
在您的片段中,覆盖onDestroy
并取消您的AsyncTasks或其他操作
AsyncTask task;
@Override
public void onDestroy() {
if (task != null && !task.isCancelled()){
task.cancel(true);
task = null;
}
super.onDestroy();
}