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

标签 java android android-permissions

我有一项 Activity ,我已将 checkSelfPermissionrequestPermissions 方法放在 onCreate 方法中。

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

最后我也有一个 onResume 方法。

onResumeonRequestPermissionsResult 哪个先被调用?

最佳答案

正确的事件链如下:

  1. 您在 Activity 的 onCreate

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

  3. 权限请求生成一个对话框,该对话框触发 onPause 在 Activity 上,因为它不再处于前台位置。

  4. 此时activity暂停,可以看到一个对话框 询问是否允许该权限。

  5. 您做出选择,对话框得到解决并且 onResume 是 调用了 Activity。

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

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

关于java - onResume() 是在 Android 的 onRequestPermissionsResult() 之后调用的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43777182/

相关文章:

java - BufferedReader 不返回

java - Lombok 的@SuperBuilder-错误Java : cannot find symbol

Java 并发和多线程

android构建源错误

android - SecurityException : get application info: Neither user 1010069 nor current process has android. 权限.INTERACT_ACROSS_USERS

java - 如何让alertDialog在每次运行我的应用程序时弹出?

android - 回到上一个在 android 中有对话框的 Activity

android - NullPointerException FirebaseAuth signInWithEmailAndPassword

android - 通过 native C 从 list 中读取 Android 权限

android - 如何以编程方式启用自动启动和 float 窗口权限