有没有方法可以找出一个片段是否被永久销毁,即它将来不会被重新创建?
我需要这个知道何时应该销毁与片段相关联的网络任务。
有没有方法可以找出一个片段是否被永久销毁,即它将来不会被重新创建?
我需要这个知道何时应该销毁与片段相关联的网络任务。
onDestroy()
中调用getActivity().isChangingConfigurations()
应该是有效的。isChangingConfigurations
返回true,片段将立即重新创建,所以你可能希望将一些东西保留在内存中。 - undefinedonDestroy
并取消你的AsyncTasks或其他操作。AsyncTask task;
@Override
public void onDestroy() {
if (task != null && !task.isCancelled()){
task.cancel(true);
task = null;
}
super.onDestroy();
}
如果任务与片段相关联,它应该在片段的onDestroy
方法中被销毁。系统假定一旦该方法返回,所有片段的资源都已清理干净,因此您应该立即进行所需的清理操作。
如果将来重新创建片段,则它将成为全新的片段,因此很可能需要整个新的网络任务。
编辑: 如果您希望工作在活动由于配置更改(例如屏幕旋转)而被销毁和重新创建时继续在后台运行,则可以设置您的片段不被销毁。您需要做两件相对简单的事情:
setRetainInstance(true)
以防止片段随活动一起被销毁。当活动在配置更改后重新创建时,将重新附加保留的片段。同时它可以继续后台处理。Fragment#setRetainInstance(boolean)
)。它应该是一个无界面的片段,这样它就不会与活动的元素绑定在一起。 - Ted HopponDestroy()
方法中添加一个toast或其他类型的通知/标志,以便您可以进行检查。如果您看到了toast或者标志已经设置,那么您就知道该片段已被销毁。