繁体   English   中英

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

[英]Is onResume() called after onRequestPermissionsResult() in Android?

我有一个活动,我在onCreate方法中放了checkSelfPermissionrequestPermissions方法。

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

最后我也有一个onResume方法。

首先调用哪一个, onResumeonRequestPermissionsResult

正确的事件链如下:

  1. 您可以在Activity的onCreate中调用requestPermissions

  2. requestPermissions开始在另一个线程中运行,因为它被设计为不阻止UI线程。 所以你的活动经历onStart然后onResume

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

  4. 此时的活动暂停,您可以看到一个对话框,要求允许或拒绝该权限。

  5. 您做出选择,对话框得到解决,并在Activity上调用onResume

还要注意的是, 在onPause通过对话总是活动在onStart和之后的onResume解雇,不管需要多长时间他们执行代码。

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

第一个是onRequestPermissionsResult

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

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

onCreate第一次启动活动时首先调用,只调用一次。

onResumeonCreate之后直接调用,或者在暂停后返回活动。

并且在用户确认权限后调用onRequestPermissionsResult

结论:在onRequestPermissionsResult之前调用onResume

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM