Closed MrsLEO closed 4 years ago
最新版本应该不能同时调用AchorManager start方方法吧。这样做会报空指针。在答应日志的地方。因为start方法会clear相关集合
初始化链一般需要在最上层的模块进行处理,等待的方式可以使用anchor功能。这里你遇到的问题实际上是模块的隔离问题。我的建议应该是依赖树应该在最上层模块去处理,因为顶层的模块对下面的模块可见而底层不可见上层依赖。 “任何时刻,依赖树的初始化工作最好在同个模块进行,无论是对于以后维护还是更新而言”。如果你想保留common初始化,那么在common中添加上层(比如application)对应的task,这些task对上层暴露接口,让上层去实现,那么整个依赖树就在common层。但是我仍然建议,在application层实现依赖树的构建和初始化,因为common不应该自己感知到自己的某些节点需要被上层所等待,这个在设计上违背了软件的设计原则。
另外,针对重复调用start的问题。start会清空上一次整个树的信息。所以才建议一次性构建完。但是如果这棵树已经完整执行完,那么重新start是可以的,这部分就是新版本追加的功能。 所以树内部的等待再启动,应该使用anchor功能而不是重新start。
你好,如果我想把一些公共初始化下沉到common层,然后在common层的application启动初始化任务。现在需要在Application中初始化相应task。但是这个task一定需要等待common中某些task初始化完成才可以继续进行,请问这个场景你有什么建议方式呢?