美文网首页
Dagger2 开发注意事项

Dagger2 开发注意事项

作者: 李福来 | 来源:发表于2018-06-01 17:58 被阅读35次

    Dagger2 开发注意事项

    1.component的inject方法接收父类型的参数,而调用时传入的参数是子类型对象则无法进行注入。
    例如 我们一般都是在component中对Activity进行注册 我们注册是传入的是AppCompatActivity,当我们在MainActivity或者在LoginActivityh中进行绑定的时候出现错误。
    2.component关联的modules中不能有重复的provide
    3.module的provide方法使用了scope,那么component就必须使用同一个注解。
    比如Module中的方法中使用了@Singleton,那么在Component中也必须使用和Module相同的@Singleton
    4.module的provide方法中没有使用scope,那么component和module是否使用注解都没有关系,可以通过编译。
    解释:在@Component中使用Scope,那么非必须在Module中的方法中使用相同的Scope
    5 component的dependencies和component自身的scope不能相同,即组件之间的scope不同。
    解释: Component使用的dependencies相当于是父类,dependencies的Component中使用的Scope 比如使用@Singleton ,那么 Component中使用的@Scope 必须的权限要小于@Singleton 可以自定义@ActivityScope,@FragmentScope

    6 singleton的组件不能依赖其他scope的组件,只能其他scope的组件依赖singleton的组件
    7 没有scope的component不能依赖有scope的component。
    8 @singleton的生命周期依赖于component,同一个 module provide singleton,不同component也是一样。
    9.@Singleton的生命周期 依附于Component,同一个module provide singleton,所生成的实例是相同的,但是不同的component生成的实例是不一样的。

    自定义Scope

    @Scope :注明是Scope
    @Documented :标记在文档;
    @Retention(RUNTIME): 运行时级别

    Subcomponent .

    1.Subcomponent同时具备两种不同生命周期的scope,SubComponent具备了父类Component的Scope,也具备了自己的Scope。
    2 SubComponent的Scope范围小于 父类的Scope范围

    相关文章

      网友评论

          本文标题:Dagger2 开发注意事项

          本文链接:https://www.haomeiwen.com/subject/ocyqsftx.html