有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我想把我的单例对象注入服务类

我尝试过,为每个服务创建一个模块,然后使用@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)保持空

谢谢你的帮助


共 (0) 个答案