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

标签 android

当调用 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/

相关文章:

java - View 被推到水平约束布局之外

java - 来自 Youtube API 的视频无法在点击时播放

android - Room 无法验证数据完整性。看起来您已更改架构但忘记更新版本号

android - IntentFilter 的作用是什么?

android - 开始删除文本时如何启用我的搜索方法

java - 处理程序未在 1 秒内运行 1000 次

android - Google Play 游戏服务——解锁的成就是否会通过 g+ 自动分享?

android - 更改选项卡布局中的线条颜色

android - 如何从设备定义中找到 Nexus 5 选项?

android - 无需留下两个图标即可免费升级为付费 Android 应用