Android 片段是否有isDestroyed()?

Android 片段是否有isDestroyed()?,android,android-fragments,Android,Android Fragments,活动已isDestroyed(),但我找不到片段的对应项 我可以重写onDestroyed()为自己设置一个标志,但我假设存在一个现有的解决方案 在更新片段中的UI之前,我试图检查片段是否在网络响应中被销毁 任何帮助都将不胜感激。谢谢 我试图检查一个片段是否在网络中被破坏 响应,以决定是否更新UI组件 您可以使用onDestroyView(),因为在调用onDestroyView()之后,由于UI被销毁,因此无法更新UI。 在执行任何UI更新之前,您可以检查getActivity()是否为nul

活动已isDestroyed(),但我找不到片段的对应项

我可以重写onDestroyed()为自己设置一个标志,但我假设存在一个现有的解决方案

在更新片段中的UI之前,我试图检查片段是否在网络响应中被销毁

任何帮助都将不胜感激。谢谢

我试图检查一个片段是否在网络中被破坏 响应,以决定是否更新UI组件

您可以使用
onDestroyView()
,因为在调用
onDestroyView()
之后,由于UI被销毁,因此无法更新UI。
在执行任何UI更新之前,您可以检查
getActivity()
是否为
null

您可以创建一个片段作为其他片段的父级,并使用以下代码检查是否已销毁功能

public abstract class ASafeFragment extends Fragment
{
    protected boolean isSafe()
    {
        return !(this.isRemoving() || this.getActivity() == null || this.isDetached() || !this.isAdded() || this.getView() == null);
    }
...
} 

来自站点:“当活动被销毁时,所有碎片都将被销毁。”所有碎片都包含在活动中,因此您应该检查您的活动


碎片没有isDestroyed()

决定如何处理可能正在进行的工作的最可靠的模式是将该工作置于一个安全的环境中。对于片段/活动,只有在适当的时候处理这些结果,或者甚至可能在配置更改后保留替换片段/活动的结果时,才会调用您的。这是额外的编码,但它是从中断和取消中恢复的最佳方式。

因为如果活动被销毁,所有片段都会被销毁,一个简单的答案可能是调用
getActivity().isDestroyed()
如果活动被销毁,则返回true,因此片段会被销毁。嵌套片段通常不是一个好主意


您还可以覆盖碎片
onDestroyView()
方法检查并将布尔变量设置为true

您试图通过此检查来完成什么,以查看它是否已销毁?您好@DougStevenson,我正在尝试检查网络响应中的碎片是否已销毁,来决定是否更新UI组件。感谢您的帮助。我现在知道还有其他选择。谢谢你介绍加载器。我阅读了文档和教程,这个概念看起来不错,但对于我的简单任务来说有点麻烦。它还不够好,想象一下你有一个片段,执行一个异步任务。然后,无论出于何种原因,在同一活动中更改片段。第一个frag的异步任务完成了,这是一个崩溃。总的来说,在销毁视图时取消/取消所有异步内容总是好的。但有时,由于缺乏方法,这并不容易实现(fusedLocationClient.lastLocation,****您)。所以我们需要一个片段相关的检查。
public static boolean isSafeFragment( Fragment frag )
{
    return !(frag.isRemoving() || frag.getActivity() == null || frag.isDetached() || !frag.isAdded() || frag.getView() == null );   
}