Android (!activity.isFinishing())是检查活动是否已销毁的方法吗?isFinishing()与IsDestroyed()的比较
调用FragmentManager时,我收到一条错误消息,表示活动已被销毁。FragmentManager在进行事务调用之前是否可以进行检查,或者我是否需要获取活动并检查它是否为null或!activity.isFinishing()?我还需要做其他检查吗?这是我过去常做的事,但我不确定这是否仍然是我现在要做的事?只是好奇为什么片段管理器不知道活动的状态。。。我需要介绍活动即将被销毁和已经被销毁的情况()。无论哪种情况,我都不想提交事务 更新:适用于API 17+活动。isDestroyed()可用。对于API<17,仍然需要确认activity.isFinishing()将检测到已破坏的活动,或者是否有其他方法来检测Android (!activity.isFinishing())是检查活动是否已销毁的方法吗?isFinishing()与IsDestroyed()的比较,android,Android,调用FragmentManager时,我收到一条错误消息,表示活动已被销毁。FragmentManager在进行事务调用之前是否可以进行检查,或者我是否需要获取活动并检查它是否为null或!activity.isFinishing()?我还需要做其他检查吗?这是我过去常做的事,但我不确定这是否仍然是我现在要做的事?只是好奇为什么片段管理器不知道活动的状态。。。我需要介绍活动即将被销毁和已经被销毁的情况()。无论哪种情况,我都不想提交事务 更新:适用于API 17+活动。isDestroyed()
if ((activity != null) && !activity.isFinishing()) {
fm.FragmentTransaction fragmentTransaction =
fm.beginTransaction().replace(R.id.fragment_container, mFeedFragment).commitAllowingStatelessLoss();
}
试试这个
布尔isDestroyed()
如果对活动进行了最后的onDestroy()
调用,则返回true,因此此实例现在已死亡
以下是在活动不可见之前执行任何任务的方法
- -在销毁活动之前执行任何最终清理
- -检查此活动是否正在完成过程中
- -当活动对用户不再可见时调用
- -当活动进入后台但尚未(尚未)终止时,作为活动生命周期的一部分调用
- -当活动检测到用户按下后退键时调用。默认实现只是完成当前活动,但是您可以覆盖它来执行任何您想要的操作李>
Activity.isFinishing()
。如果为真
,则使用此类活动
是不安全的,如果为假
,至少我们知道活动
的销毁尚未触发
推理
- 检查
是否为活动
并不意味着null
为空 摧毁。活动
可以被销毁并保留数据 在它里面创造的活动
- 检查是否有来自状态的
如果对活动进行了最后一次onDestroy()调用,则返回true,因此此实例现在已死亡 死亡实例是什么意思,idk,我在网上找不到 互联网是一个完整的答案,但在这种情况下,它显然并不意味着Activity.isDestroyed()
。 因此,null
死实例!=空
- 检查是否有来自状态的
检查此活动是否处于完成过程中,可能是因为您对其调用了finish(),也可能是因为其他人调用了finish() 要求把它完成。这通常在onPause()中用于 确定活动是暂停还是完全停止 完成Activity.isFinishing()
- 调用
将调用Activity.finish()
。 然而,在Robolectric的帮助下做了一些测试后,它认为在调用Activity.ondestory()
Activity.finish()
Activity.isFinishing()==true
为什么,查查Activity.isDestroyed()==false