找出片段被永久销毁的时间

时间:2014-12-26 16:53:40

标签: android

有没有办法确定片段是否被永久销毁,即将来是否会重建?

我需要知道何时应该销毁与该片段相关的网络任务。

4 个答案:

答案 0 :(得分:2)

应该有效的方法是在片段getActivity().isChangingConfigurations()中调用onDestroy()

答案 1 :(得分:0)

如果任务与片段相关联,则应在片段的onDestroy方法中将其销毁。系统假定一旦该方法返回,所有片段的资源都已被清除,因此您应该继续进行所需的清理。

如果将来重新创建片段,它将是一个全新的片段,因此无论如何都可能需要一个全新的网络任务。

编辑: 如果由于配置更改(例如屏幕旋转)而导致活动被销毁并重新创建时,您希望工作在后台继续,则可以将片段设置为不被销毁。你需要做两件相对简单的事情:

  1. 将您的片段定义为没有UI(以便在销毁活动时不需要清除任何内容)。
  2. 调用片段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();
}