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

Java 在Android中,onResume()是在onRequestPermissionsResult()之后调用的吗?,java,android,android-permissions,Java,Android,Android Permissions,我有一个活动,我将checkSelfPermission和requestPermissions方法放在onCreate方法中 在onCreate之外,我还有一个onRequestPermissionsResult方法 最后,我还有一个onResume方法 在启动活动期间,onResume或onRequestPermissionsResult?onResume()将首先调用哪一个,因为只有在用户在权限请求对话框中接受或拒绝对应用程序的权限后才会调用onRequestPermissionsResul

我有一个活动,我将
checkSelfPermission
requestPermissions
方法放在
onCreate
方法中

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

最后,我还有一个
onResume
方法


在启动
活动期间,
onResume
onRequestPermissionsResult

onResume()
将首先调用哪一个,因为只有在用户在权限请求对话框中接受或拒绝对应用程序的权限后才会调用
onRequestPermissionsResult(…)
。但是,在调用onRequestPermissionsResult(…)
后,会再次调用onResume,以允许您的活动考虑用户的选择(授予或拒绝的权限),并相应地执行第一次调用的代码,并且在第一次启动活动时仅调用一次

onResume
直接在
onCreate
之后调用,或者在暂停后活动返回时调用

在用户确认权限后调用onRequestPermissionsResult

结论:
onResume
onRequestPermissionsResult
之前调用

您可以阅读有关活动生命周期的信息


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

正确的事件链如下:

  • 您可以在活动的onCreate中调用
    requestPermissions

  • requestPermissions
    开始在另一个线程中运行,因为它是 设计为不阻塞UI线程。因此,您的活动经历了onStartonResume

  • 权限请求生成一个对话框,该对话框将激发 暂停活动,因为它不再位于前景位置

  • 此时活动已暂停,您可以看到一个对话框 请求允许或拒绝许可

  • 您做出选择后,对话框将被解析,并且onResume将被关闭 我被邀请参加这次活动

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


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

    第一个是
    onRequestPermissionsResult


    我已经在
    onPause()
    上销毁了一些对象,它将在
    onResume()
    上重新创建,但是我发现我的
    onRequestPermissionsResult()
    操作了一些销毁的对象,如果您将
    requestPermissions
    放在
    onCreate()
    中,就会导致
    NullPointEx

    onRequestPermissionsResult
    将在
    onResume()之前调用
    ?只需要几行代码,在这里写问题并等待任何人回答所需的时间就会少得多。谢谢@timcastelijnst这个答案不正确。onRequestPermissionsResult在onResume()之前调用。您是否在任何设备上进行过测试?您是否有此答案的来源?您所指的文档没有引用onRequestPermissionRequest的顺序,我已经测试过了,当onRequestPermissionsResult方法结束时,会再次调用onResume。我有完全相同的问题。谢谢你的详细解释!onstart和onresume可能根本不会被调用——这就是为什么在oncreate中调用requestPermissions是错误的