如果我在 Fragments 中使用 ViewBinding,onDestoryView() 之后会出现 NPE 吗?

2024-03-29

我正在尝试在片段中使用 ViewBinding。

首先,谷歌是这样说的:

注意:碎片比他们的观点更长久。确保清除片段的 onDestroyView() 方法中对绑定类实例的所有引用。 [在片段中使用视图绑定 https://developer.android.com/topic/libraries/view-binding#fragments]

所以,我写了如下代码:

private var _binding: ResultProfileBinding? = null
// This property is only valid between onCreateView and
// onDestroyView.
private val binding get() = _binding!!

override fun onDestroyView() {
    super.onDestroyView()
    _binding = null
}

然后,在 onDestoryView() 之后我对 NPE 产生了担忧。

安全吗?假设您在 onDestoryView() 和 onDetact() 之间的某个时刻收到了网络响应


碎片比他们的观点更长久

让我们解释一下,假设您有 Fragment A 和 B(BackStack 中的 A 和 B)相同的容器视图和相同的 FragmentManager。当你用B替换fragment A时。A的所有视图元素都将被销毁,但Fragment A的实例在fragment中仍然存在BackStack。这意味着如果你保持价值_binding它可能是泄漏,因为它仍然保留视图引用,但 Android 系统想要清除它。因此 Google 建议您将 null 分配给_binding释放视图引用。

假设您在 onDestoryView() 和 onDetact() 之间的某个时刻收到了网络响应

如果 onDestroyView 更新您的 UI,您不应该在 onDestroyView 之后处理任何网络响应,因为您的片段视图不会呈现给用户。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如果我在 Fragments 中使用 ViewBinding,onDestoryView() 之后会出现 NPE 吗? 的相关文章

随机推荐

  • 为什么建议将实例变量声明为私有?

    我的问题与Java有关 但它也可以应用于C 我想知道为什么每个人都建议创建实例变量private而不是制作它们受保护的 我们想一想 子类看不到私有变量 因此如果我需要访问或更改子类中超类的变量 我被迫使用一些访问器和修改器方法 例如getM
  • 将 Windows Phone 7 应用程序中的图像文件上传到 PHP

    我正在尝试从图片库 在 WP7 上 上传图片并将其保存在服务器上的文件夹中 在服务器上 我使用 PHP 通过 POST 方法接收文件 PHP 代码是
  • 在 fortran 中生成序列数组

    Fortran中是否有一个内在函数可以生成一个包含从a到b的数字序列的数组 类似于python的range gt gt gt range 1 5 1 2 3 4 gt gt gt range 6 10 6 7 8 9 不 没有 但是 您可以
  • 获取完整的正在运行的进程列表(Visual C++)

    我目前正在使用 EnumProcesses 函数来获取正在运行的进程的列表 然而 由于我的应用程序在用户空间中运行 因此它无法获取不在用户下运行的进程 包括系统进程 的句柄 是否有其他方法可以让我访问这些内容 我所需要的只是进程名称 只是为
  • Android:减少 GridView 中列之间的空间

    请参阅随附的屏幕截图 其中我试图减少 GridView 中列之间的空间 我的main xml如下
  • SQL 选择一行并存储在 SQL 变量中

    所以 我正在编写这个存储过程 但我对 SQL 真的很烂 我向你们提出的问题是 我可以选择整行并将其存储在变量中吗 我知道我可以做类似的事情 declare someInteger int select someInteger select
  • 日期时间格式和时区

    当尝试解析日期时DateTime createFromFormatPHP 将无法识别时区 Example t new DateTime echo t gt format Y m dTH i s 将输出 2012 01 24MSK16 53
  • Rails 控制台错误需要'./example_user'

    我正在使用 Railstutorialhttp ruby railstutorial org chapters rails flavored ruby sec a user class http ruby railstutorial org
  • sqlite get 字段超过 2 MB [重复]

    这个问题在这里已经有答案了 当我尝试从 SQlite 获取数据且字段大小超过 2 MB 时 它会抛出异常 Couldn t read row 0 col 0 from Cursor Window Make sure the Cursor i
  • .Net TPL:具有任务优先级的有限并发级别任务调度程序?

    我目前正在使用 LimitedConcurrencyLevelTask Scheduler 详细信息请参见此处http msdn microsoft com en us library ee789351 aspx http msdn mic
  • 当应用于基本类型时,通过引用进行 const 调用是否会提高性能?

    对于对象 尤其是字符串 按引用调用比按值调用更快 因为函数调用不需要创建原始对象的副本 使用const 还可以确保引用不被滥用 我的问题是 如果使用基本类型 如 bool int 或 double const 按引用调用是否也会更快 voi
  • 在多个环境中执行编码的 UI 测试

    现在 我的编码 UI 测试使用它们的 app config 来确定它们执行的域 该域与环境具有 1 1 关系 为了简化它 测试网 www UAT com www prod com 在 App config 中我有类似的内容
  • Mathematica 什么时候创建新符号?

    再会 我早些时候以为数学在当前符号中创建新符号 Context在转换输入字符串的阶段 即分配给InString 来输入表达式 即分配给In 但一个简单的例子打破了这一解释 In 1 f During evaluation of In 1 I
  • 在 .NET Core 3.0 中加载 exe 时出现错误的 IL 格式

    我有两个 NET Core 3 0 WPF 项目 其中之一 我发布到一个名为 DefaultPlugin exe 的可执行文件中 在我的第二个 WPF 项目中 我尝试使用 Assembly Load 加载第一个项目并读取类型 但是 当我这样
  • 根据android中图表引擎饼图中的屏幕大小标记文本大小

    我成功使用图表引擎显示饼图 我想根据屏幕尺寸自定义标签文本大小 提前致谢 这个问题归结为解决问题 achartengine 的设计似乎考虑到了原始像素 而显示质量和像素密度在过去几年中显着提高 achartengine 示例中的标签在我的
  • LESS mixin 变量类名

    我正在使用 Font Awesome 4 0 0 并且想要在 LESS 中执行类似的操作 btn github btn btn primary margin left 3em i fa css prefix fa css prefix gi
  • 在C++中,如何读取一个文本文件的内容,并将其放入另一个文本文件中?

    我想阅读a的内容input txt文件并将其放入output txt文件 我尝试在下面的代码中执行此操作 但没有成功 我是新手C 文件操作 你能告诉我该怎么做吗 include
  • wiki 如何处理多个同时编辑?

    这件事一直萦绕在我的脑海里 所以我想我还是去问问吧 wiki 如何处理对同一内容的多次编辑 这是我所要求的一个简单的例子 假设一个页面包含以下内容 我是一页 现在假设有两个人去编辑该页面 每人加一句话 第一个人 我是一页 我是同一页的第二句
  • 在RSelenium中指定下载文件夹

    我在用RSelenium导航至包含下载文件按钮的网页 我使用 RSelenium 单击此按钮来下载文件 但是 文件默认下载到我的文件夹 下载 中 而我希望将文件下载到我的工作目录中 我尝试指定一个 chrome 配置文件 如下所示 但这似乎
  • 如果我在 Fragments 中使用 ViewBinding,onDestoryView() 之后会出现 NPE 吗?

    我正在尝试在片段中使用 ViewBinding 首先 谷歌是这样说的 注意 碎片比他们的观点更长久 确保清除片段的 onDestroyView 方法中对绑定类实例的所有引用 在片段中使用视图绑定 https developer androi