onResume() 是在 Android 中的 onRequestPermissionsResult() 之后调用的吗?

Is onResume() called after onRequestPermissionsResult() in Android?

我有一个 activity 并且我在 onCreate 方法中放入了 checkSelfPermissionrequestPermissions 方法。

我在 onCreate 之外还有一个 onRequestPermissionsResult 方法。

我终于有了一个 onResume 方法。

先调用哪个,onResume还是onRequestPermissionsResult

onResume() 将在您的 Activity 启动期间首先调用,因为 onRequestPermissionsResult(...) 只会在用户在权限请求对话框中接受或拒绝应用程序权限后调用。但是在调用 onRequestPermissionsResult(...) 之后再次调用 onResume 以允许您的 activity 考虑用户选择(授予或拒绝权限)并相应地执行代码

onCreate 在 activity 首次启动时首先调用且仅调用一次。

onResumeonCreate 之后或在 activity return 暂停后直接调用。

onRequestPermissionsResult 在用户确认权限后调用。

结论:onResumeonRequestPermissionsResult之前被调用。

您可以阅读有关 Activity LifeCycle https://developer.android.com/guide/components/activities/activity-lifecycle.html

如果对您有帮助,请标记为已回答。

正确的事件链如下:

  1. 您在 Activity 的 onCreate

  2. 中调用 requestPermissions
  3. requestPermissions在另一个线程中开始运行,因为它是 旨在不阻塞 UI 线程。所以你的 activity 通过 onStart 然后 onResume

  4. 权限请求生成对话框,触发 onPause on the Activity,因为它不再处于前台位置。

  5. 此时activity暂停,可以看到一个对话框 询问允许或拒绝权限。

  6. 你做出选择,对话框得到解决,onResume 拜访了 Activity.

另请注意,对话框总是在 onStartonResume 之后触发 onPause Activity,无论执行其中的代码需要多长时间。

现在您还可以了解为什么不应该将 requestPermissions 放在 onResume.

第一个是onRequestPermissionsResult!

我在 onPause() 上销毁了一些对象,它将在 onResume() 上重新创建,但我发现我的 onRequestPermissionsResult() 操作了一些被销毁的对象并导致 NullPointEx