Dagger 2 - 将第三方库注入Android服务和活动

时间:2015-03-05 15:27:27

标签: android dependency-injection dagger

我之前问过这个问题:Dagger 2 Third part Injection Android我得到了答案。之后我又学到了一些东西,我相信我没有足够具体来解释我的问题。现在这个问题一团糟,这就是我发布这个新问题的原因。

我试图使用Dagger 2注入第三方库,特定的Otto总线。该总线应注入多个服务和活动,因为我使用事件驱动架构。

正如先前的问题提到的那样,模块,组件已经制作完成。正如回答告诉我的那样,我必须创建图表以便能够将总线引入类中。

我必须将每个类注入到我拥有的组件中,但我想知道如何创建这个组件注入泛型。答案表明了这一点:

@Component(modules = EventBusModule.class)
@Singleton
public interface EventBus {
    Bus bus();
    void inject(WearService wearService);
}

public class MyApplication extends Application {
    private EventBus mEventBusComponent;

    @Override
    public void onCreate() {
        super.onCreate();
        mEventBusComponent = Dagger_EventBus.create();
    }

    public void inject(WearService wearService) {
        mEventBusComponent.inject(wearService);
    }
}

public class WearService extends WearableListenerService {
    public int onStartCommand(Intent intent, int flags, int startId) {
        ((MyApplication) getApplicationContext()).inject(this);
    }
}

我一直试图用Generics做这个,但一直收到这个错误:

Error:(13, 14) error: Type parameters must be bounded for members injection.

@Component(modules = CommunicationModule.class)
@Singleton
public interface AppComponent {
    <T> void inject(Class<T> module);
    Bus bus();
}

public <T> void inject(Class<T> module) {
    mAppComponent.inject(module);
}

0 个答案:

没有答案