【问题标题】:What is the Difference between onResume() and onPostResume() in Activity Life Cycle?Activity 生命周期中的 onResume() 和 onPostResume() 有什么区别?
【发布时间】:2020-04-18 18:12:13
【问题描述】:

在 Android 中学习 Activity LifeCycle 时,我对这两种方法感到困惑。我试图分别实现它们并且工作正常。那么,这两个双胞胎有什么区别呢?

【问题讨论】:

  • 你可以检查我的答案是否正确
  • 确定,我查过了
  • 请您支持我的新问题,这非常重要,需要开发人员的关注。谢谢
  • 哪个问题?
  • 我最近添加的链接:stackoverflow.com/questions/61303820/…

标签: java android android-studio onresume activity-lifecycle


【解决方案1】:

onResume():

protected void onResume()onRestoreInstanceState(Bundle)onRestart()onPause() 之后调用,以便您的活动开始与用户交互。这是活动变得活跃并准备好接收输入的指示器。它位于活动堆栈的顶部,对用户可见。

在 Build.VERSION_CODES.Q 之前的平台版本上,这也是尝试打开独占访问设备或访问单例资源的好地方。从 Build.VERSION_CODES.Q 开始,系统中可以同时恢复多个活动,因此应使用 onTopResumedActivityChanged(boolean) 代替。

派生类必须调用该方法的超类实现。否则,将引发异常。

如果你重写这个方法,你必须调用超类的实现。

 onPostResume():

protected void onPostResume() 在活动恢复完成时调用(在调用 onResume() 之后)。应用程序一般不会实现此方法;它旨在让系统类在应用程序恢复代码运行后进行最终设置。

派生类必须调用该方法的超类实现。否则,将引发异常。

如果你重写这个方法,你必须调用超类的实现。

【讨论】:

    【解决方案2】:

    onPostResume :

    在 Activity 恢复完成时调用(在调用 Activity 的 {@link #onResume} 之后)。应用程序一般不会实现此方法;它旨在让系统类在应用程序恢复代码运行后进行最终设置。

    它会做以下事情

    它将确保屏幕对用户可见,并将为活动进行最终设置。

    删除消息队列中代码为“what”的所有待处理消息。

    检查所有片段是否被恢复并将控制器的 FragmentManager 管理的所有片段移动到恢复状态。

    对控制器的 FragmentManager 管理的 Fragment 执行任何待处理的操作。

    如果您检查它的生命周期虎钳,它的工作方式如下所示

    onResume() - 活动

    onResume() - 如上所述的片段检查第三点

    onPostResume() - 活动 请看这里:Activity life cycle methods : onPostResume significance

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-13
      • 1970-01-01
      • 2021-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-12
      相关资源
      最近更新 更多