如何使用Dagger 2.11 +将依赖项注入服务进程?

时间:2017-10-28 03:13:02

标签: java android dependency-injection dagger-2

我想把我的单身人士注入服务类。

我尝试过,为每个服务创建一个模块,然后使用@ContributesAndroidInjector在AppComponent上创建。

按照我如何做的例子。

@Singleton
@Component(modules = {
        AndroidInjectionModule.class,
        AppModule.class,
        ServiceBuilder.class
})
public interface AppComponent {

    @Component.Builder
    interface Builder {

        @BindsInstance
        Builder application(Application application);

        AppComponent build();

    }

    void inject(ApplicationController app);
}

@Module(includes = DataManagerModule.class)
class AppModule {

    @Provides
    @Singleton
    Context provideContext(Application application) {
        return application;
    }

    @Provides
    @Singleton
    BaseSchedulerProvider provideSchedulerProvider() {
        return SchedulerProvider.getInstance();
    }

    @Provides
    @Singleton
    SessionManager provideSessionManager(Application application) {
        return SessionManagerImpl.from(application);
    }

}

@Module
public abstract class ServiceBuilder {

    @PerService
    @ContributesAndroidInjector
    abstract MyService bindMyService();

}

public class MyService extends IntentService {

    @Inject
    SessionManager sessionManager;

    @Override
    public void onCreate() {
        super.onCreate();
        AndroidInjection.inject(this);
    }

}

我对我的活动和片段遵循相同的策略,但是服务不起作用,我不知道错误。

编辑1:添加错误:

嗨,我忘了写我的例子了。没有错误,但预期的实例(SessionManager sessionManager)保持为null。

感谢您的帮助

0 个答案:

没有答案