Activity 生命周期中 onResume() 和 onPostResume() 有什么区别?

What is the Difference between onResume() and onPostResume() in Activity Life Cycle?

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

onPostResume :

在 activity 恢复完成时调用(在 activity 的 {@link #onResume} 被调用之后)。应用程序一般不会实现这个方法;它旨在供系统 类 在应用程序恢复代码具有 运行.

后进行最终设置

它会做以下事情

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

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

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

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

如果你检查它的生命周期,它的工作原理如下

onResume() - Activity

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

onPostResume() - Activity 请看这里:

onResume():

protected void onResume()onRestoreInstanceState(Bundle)onRestart()onPause() 之后调用,以便您的 activity 开始与用户交互。这表明 activity 已激活并准备好接收输入。它位于 activity 堆栈之上,对用户可见。

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

派生的 classes 必须调用该方法的超 class 实现。如果他们不这样做,将抛出异常。

如果重写此方法,则必须调用 superclass 实现。

onPostResume():

protected void onPostResume() 在 activity 恢复完成时调用(在调用 onResume() 之后)。应用程序一般不会实现这个方法;它旨在供系统 classes 在应用程序恢复代码具有 运行.

后进行最终设置

派生的 classes 必须调用该方法的超 class 实现。如果他们不这样做,将抛出异常。

如果重写此方法,则必须调用 superclass 实现。