onResume()和onResumeFragments()之间的区别

时间:2014-12-23 11:58:48

标签: android android-fragments android-fragmentactivity android-lifecycle

FragmentActivity.onResume() javadoc:

  

将onResume()发送到片段。请注意,为了更好地与平台的旧版本进行互操作,在此调用时,不会恢复附加到活动的片段。这意味着在某些情况下,仍可以保存先前的状态,不允许修改状态的片段事务。要正确地与处于正确状态的片段进行交互,您应该覆盖onResumeFragments()。

FragmentActivity.onResumeFragments() javadoc:

  

这是onResume()的片段定向版本,您可以覆盖该版本以在其片段恢复的同一点执行Activity中的操作。一定要经常打电话给超级班。

以上是否意味着平台保证

    执行onResume()和时,
  • 片段从不将恢复(FragmentActivity.onResume()未被调用) 执行onResume()
  • 片段始终将恢复(FragmentActivity.onResumeFragments()被调用)?

如果没有,开发商如何正确使用并对上述内容保持警惕?

1 个答案:

答案 0 :(得分:17)

onResume()被调用吗?

是的,仍会调用FragmentActivity.onResume()(与Activity.onResume()相同的上下文)。 即使您覆盖FragmentActivity.onResumeFragments()(来自FragmentActivity的其他方法,它知道它包含Fragments)。

onResume()onResumeFragments()有什么区别?

FragmentActivity.onResumeFragments()FragmentActivity关于当它包含的Fragments正在恢复时的回调,这与时的{em>不同{1}}恢复

  

这是onResume()的片段定向版本,您可以覆盖该版本以在其片段恢复的同一点执行Activity中的操作。一定要经常打电话给超级班。

何时使用哪种方法?

如果您使用的是support-v4库和Activity,请尝试在FragmentActivity实施中始终使用onResumeFragments()代替onResume()

FragmentActivity#onResume() documentation

  

要正确地与处于正确状态的片段进行交互,您应该覆盖onResumeFragments()。

差异很微妙,请参阅https://github.com/xxv/android-lifecycle/issues/8

  使用v4 compat库时,

onResume()应该用于普通的Activity和onResumeFragments()。   只有在应用程序等待FragmentManager完成初始FragmentTransaction时才需要这样做。