gpt4 book ai didi

android - (!activity.isFinishing()) 是检查 Activity 未被销毁的方法吗? isFinishing() 与 isDestoryed()

转载 作者:搜寻专家 更新时间:2023-11-01 08:26:14 26 4
gpt4 key购买 nike

当调用 FragmentManager 时,我收到一条错误消息,指出 Activity 已被销毁。在进行事务调用之前是否检查 FragmentManager 可以执行,或者我是否需要获取 Activity 并检查它不为 null 或 !activity.isFinishing() ?我还需要做其他检查吗?这是我以前做的,但不确定这是否仍然是这样做的方法?只是好奇为什么 fragment 管理器不知道 Activity 的状态......我需要涵盖 Activity 即将被销毁和 Activity 已经被销毁的情况()。无论哪种情况,我都不想提交交易。

更新:对于 API 17+,activity.isDestroyed() 可用。对于 API < 17 仍然需要确认 activity.isFinishing() 将检测到被破坏的 Activity ,或者是否有其他方法可以做到这一点?

  if ((activity != null) && !activity.isFinishing()) {
fm.FragmentTransaction fragmentTransaction =
fm.beginTransaction().replace(R.id.fragment_container, mFeedFragment).commitAllowingStatelessLoss();
}

最佳答案

试试这个boolean isDestroyed ()

Returns true if the final onDestroy() call has been made on the Activity, so this instance is now dead.

以下是您在 Activity 变得不可见之前执行任何任务的方法。

  • onDestroy() - 在销毁 Activity 之前执行任何最终清理工作
  • isFinishing - 检查此 Activity 是否正在完成,
  • onStop - 当 Activity 对用户不再可见时调用。
  • onPause - 当 Activity 进入后台但尚未(尚未)被终止时,作为 Activity 生命周期的一部分调用。
  • onBackPressed - 当 Activity 检测到用户按下后退键时调用。默认实现只是简单地完成当前 Activity ,但您可以覆盖它以执行任何您想要的操作。

关于android - (!activity.isFinishing()) 是检查 Activity 未被销毁的方法吗? isFinishing() 与 isDestoryed(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44712869/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com