guolindev / PermissionX

An open source Android library that makes handling runtime permissions extremely easy.
Apache License 2.0
3.53k stars 406 forks source link

多个权限同时申请的顺序 #31

Closed xukunn closed 4 years ago

xukunn commented 4 years ago

版本1.4.0 存储权限,定位权限,同时申请,定位永远在前面,不管我在程序中按什么顺序写的. 应该是以下代码改变了原来list的顺序 PermissionCollection 类中: public PermissionBuilder permissions(List permissions) { Set permissionSet = new HashSet<>(permissions); ... }

guolindev commented 4 years ago

是这个样子的。PermissionX不能保证你请求权限的顺序,之所以这么设计基于两点原因:

  1. 效率问题。因为PermissionX会对请求的权限排重,而排重的话最快的方式就是用Set,但缺点就是Set是无序的。用List虽然可以保证有序,但是在排重方面可能会花掉一些额外的时间。
  2. 顺序的必要性。我并没有发现同时申请多个权限时,在顺序方面存在什么必要性。

所以综合做了一下取舍后,我采取了这样的设计方案。

如果你有什么理由是必须要求请求权限保持固定顺序的,请告诉我,我再重新考虑一下设计方案。

xukunn commented 4 years ago

我下载了几个app,确实很多都是定位权限在前面,不同的权限其实也没有先后的依赖关系.