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

时间:2017-05-04 08:02:51

标签: java android android-permissions

我有一项活动,我已将checkSelfPermissionrequestPermissions方法放入onCreate方法。

我在onCreate之外也有onRequestPermissionsResult方法。

最后我也有onResume方法。

首先调用哪一个,onResumeonRequestPermissionsResult

4 个答案:

答案 0 :(得分:11)

正确的事件链如下:

  1. 您在活动的 onCreate

  2. 中致电requestPermissions
  3. requestPermissions开始在另一个线程中运行,因为它是     设计为不阻止UI线程。因此,您的活动需要依次经过 onStart onResume

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

  5. 当前活动已暂停,您可以看到一个对话框     要求允许或拒绝许可。

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

还要注意,对话框 onPause 总是在活动的 onStart onResume 之后触发,无论它花费多长时间。在其中执行代码。

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

答案 1 :(得分:2)

with logged_in as ( select userid, :convo_id conversation_id from sessions where session = :session ), user_allowed as ( select count(1) > 0 is_allowed from logged_in join conversation_users using (userid, conversation_id) ) select l.userid is not null is_logged_in, a.is_allowed, c.body, c.time, c.user from user_allowed a left join logged_in l on true left join conversation using (conversation_id) 启动期间将首先调用

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

答案 2 :(得分:1)

第一个是onRequestPermissionsResult

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

答案 3 :(得分:-4)

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

onResumeonCreate后或在暂停后返回活动时直接调用。

在用户确认权限后调用onRequestPermissionsResult

结论:在onResume之前调用onRequestPermissionsResult

您可以阅读有关活动生命周期https://developer.android.com/guide/components/activities/activity-lifecycle.html

的信息

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