不同步地显示权限说明
从Android 6.0开始,在运行时请求权限,而不是在安装之前。
Android官方doc推荐以下代码:
// Here, thisActivity is the current activity
if (ContextCompat.checkSelfPermission(thisActivity,
Manifest.permission.READ_CONTACTS)
!= PackageManager.PERMISSION_GRANTED) {
// Should we show an explanation?
if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity,
Manifest.permission.READ_CONTACTS)) {
// Show an explanation to the user *asynchronously* -- don't block
// this thread waiting for the user's response! After the user
// sees the explanation, try again to request the permission.
} else {
// No explanation needed, we can request the permission.
...
}
}
我对上面示例代码中的一件事感到困惑,这就是为什么上面的评论说“ 为用户异步显示一个解释 ”? 这是一个遵循的惯例吗? 我的意思是,如果我只是打算弹出一个对话框来解释为什么需要权限,我不认为需要以异步方式弹出对话框。 我只是不明白为什么谷歌推荐异步代码。
它是否表示谷歌不希望在那里的开发者弹出对话框,但做一些重要的行动? 嗯......无论如何,这件事相当令人困惑。
这是一个遵循的惯例吗?
这是所有Android应用程序开发中的标准概念,尤其是在处理UI时。 这也是非常必要的,因为在Android中没有用于同步UI的API。
我的意思是,如果我只是打算弹出一个对话框来解释为什么需要权限,我不认为需要以异步方式弹出对话框。
您在Android中弹出的每个对话框都是异步弹出的。 当您调用show()
, show()
返回的时间不会出现对话框。 它计划出现,并且在您将控制权返回给主应用程序线程之后它会显示。 这就是谷歌在这里所说的“异步”的意思。
一个同步UI是,如果调用show()
显示一个对话框阻止你的代码的进一步执行,直到对话框就走了,让你知道什么是用户以下没有与下面的语句该对话框show()