不同步地显示权限说明

从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()

链接地址: http://www.djcxy.com/p/37941.html

上一篇: show permission explanation asynchronisly

下一篇: Animating Dynamic Sized Content with CSS in Safari