DSAppTeam / Anchors

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

依赖关系不明朗的情况? #21

Closed jiangming8 closed 4 years ago

jiangming8 commented 4 years ago

依赖关系不是很明确的情况,不太好处理?

比如广告SDK依赖OAID的获取,但是OAID获取时间比较耗时。可以在获取一次之后就保存下来,下次直接从本地读取数据就行,就不用依赖这个获取OAID的方法了,还能够提高启动速度。

这种情况,算是依赖吗?

YummyLau commented 4 years ago

首先,OAID如果只是服务于广告SDK,那么这部分的获取,无论是本地还是网络,都和SDK初始化是一个整体。这里要特别注意如果你sdk的初始化可异步执行,那么整体没有什么问题,如果是需要主线程同步,还需要考虑你是否需要在application#onCreate前执行完毕。

  1. 完全异步,你可以整体是一个task丢到异步去处理;
  2. 同步但是不要求严格阻塞onCreate,则异步一个task处理OAID然后后置初始化SDK为一个task
  3. 同步但是阻塞onCreate,则异步一个task处理OAID然后后置初始化SDK为一个task,后者为一个anchor