DSAppTeam / Anchors

:white_check_mark: Anchors 是一个基于图结构,支持同异步依赖任务初始化 Android 启动框架。其锚点提供 "勾住" 依赖的功能,能灵活解决初始化过程中复杂的同步问题。参考 alpha 并改进其部分细节, 更贴合 Android 启动的场景, 同时支持优化依赖初始化流程, 自动选择较优的路径进行初始化。
Apache License 2.0
820 stars 79 forks source link

动态权限申请要考虑吗 #20

Closed jiangming8 closed 4 years ago

jiangming8 commented 4 years ago

项目中用到了动态权限申请,在申请成功之后的回调里,有SDK的初始化逻辑。 问题: 1,请问这个动态权限申请能封装成任务吗?看代码,动态权限申请,要添加各种回调,还跟Activity的onRequestPermissionsResult回调有关。目前感觉不太好封装。 2,假设动态权限能封装成任务,那申请成功回调中的SDK初始化逻辑,和他算是依赖关系吗?

YummyLau commented 4 years ago

动态权限的申请有context的回调校验,所以不建议作为库sdk的初始化。可是也可以做,由于权限申请是需要主线程处理的,所以你的sdk初始化应该这样处理:通过阻塞一个异步task循环查询权限逻辑,当拒绝或者授权后通知异步task是否继续走或者终端。但是我觉得这样是把场景复杂化,比如支付宝美团等主流app,核心权限的授权都是启动之后,用户授权之后才开始进入初始化链开始初始化业务sdk的,这样更合理。

jiangming8 commented 4 years ago

“支付宝美团等主流app,核心权限的授权都是启动之后,用户授权之后才开始进入初始化链开始初始化业务sdk的”,意思是说先授权,再进行初始化吧。那这个授权的时机是什么呢?在Application的onCreate进行请求权限?那授权成功的回调也是application里面?在授权成功的回调里面,再进行初始化逻辑?

我这么理解OK吗?

YummyLau commented 4 years ago

@jiangming8 在splash 闪屏页面请求。

jiangming8 commented 4 years ago

在splash里面才开始启动初始化流程,会不会太晚了?作者您开发的APP也是在splash里进行初始化流程的吗?

YummyLau commented 4 years ago

大部分sdk不需要授权,授权的都是splash阻塞处理。