每个范围依赖/覆盖Dagger2中每个范围的依赖关系

时间:2016-12-19 22:59:49

标签: android dependency-injection rx-java dagger-2

我认为最简单的解释方法是使用包含RxJava的代码示例

select st.sampleValue
from sampleTable st
left join sampleTable st2
on st2.po=st.po
where 
st.PO=123 or
(st.pk > st2.pk &&
st.pk <
(select top 1 st3.pk
from sampleTable st3
where st3.pk > st2.pk
&& st3.po is not null
order by st3.pk asc))
order by st.sampleValue asc

所以我想要做的就是让类能够要求一个CompositeSubscription并且他们得到那个范围的那个。这样他们就可以自由地取消订阅整个CompositeSubscription。这是必要的,以便我的单身人士不会干扰我的活动,这些活动不会干扰我的碎片。

1 个答案:

答案 0 :(得分:0)

您不能在多个范围内提供相同的类。您收到错误{Class} is bound multiple times

因此以下设置无效

@Module
public class ActivityRxJavaModule {

    @Provides
    @PerActivity
    CompositeSubscription providesCompositeSubscription() {
        return new CompositeSubscription();
    }
}

@Module
public class FragmentRxJavaModule {

    @Provides
    @PerFragment
    CompositeSubscription providesCompositeSubscription() {
        return new CompositeSubscription();
    }
}

所以我知道有两种解决方案。

  1. 每个范围的子类 一个。 Singleton {Class},PerWhatever {Class}
  2. 使用名称注释 一个。 @Named(&#34; singleton&#34;),@ Names(&#34; perwhatever&#34;)
  3. 我似乎更喜欢每个范围的子类,因为我觉得在重构时它更安全一些,但两者都应该有效。