Android 注入 class return 空
Android injecting class return null
我正在使用 JobQueue 库,我可以成功地向其中注入一些 class,例如 GithubService:
public interface GithubService {
@GET("repositories")
Call<List<GithubRepo>> getAllRepositories();
}
现在我正在尝试注入其他 class 作为 RxBus
public interface Bus {
void register(@NonNull Object observer);
<T> CustomSubscriber<T> obtainSubscriber(@NonNull Class<T> eventClass, @NonNull Consumer<T> receiver);
<T> void registerSubscriber(@NonNull Object observer, @NonNull CustomSubscriber<T> subscriber);
void unregister(@NonNull Object observer);
void post(@NonNull Object event);
}
进入工作文件,但我得到空值
工作class:
public class GetLatestRepositories extends Job implements JobManagerInjectable {
@Inject
transient GithubService githubService;
@Inject
transient Bus eventBus;
private Call<List<GithubRepo>> repositoryCall;
public GetLatestRepositories() {
super(new Params(JobPriority.MID).requireNetwork().persist());
eventBus.register(this); /* IS NULL*/
}
@Override
public void onAdded() {
}
...
@Override
public void inject(ApplicationComponent component) {
component.inject(this);
}
}
ApplicationComponent
@ActivitiesScope
@Component(dependencies = GithubApplicationComponent.class)
public interface ApplicationComponent {
void inject(ActivityRegister activityRegister);
void inject(ActivityStartUpApplication activityStartUpApplication);
void inject(GetLatestRepositories getLatestRepositories);
}
GithubApplicationComponent
@AlachiqApplicationScope
@Component(
modules = {
UserInformationModule.class,
NetworkServiceModule.class,
PicassoModule.class,
JobManagerModule.class,
RxModule.class,
ActivityModule.class
}
)
public interface GithubApplicationComponent {
Picasso getPicasso();
GithubService getGithubService();
JobManager getJobManager();
Bus getBus();
}
接收模块
@Module
public class RxModule {
@Provides
@AlachiqApplicationScope
public Bus getBus() {
return new RxBus();
}
}
在 RxModule
而不是:
return new RxBus();
做:
return BusProvider.getInstance();
我正在使用 JobQueue 库,我可以成功地向其中注入一些 class,例如 GithubService:
public interface GithubService {
@GET("repositories")
Call<List<GithubRepo>> getAllRepositories();
}
现在我正在尝试注入其他 class 作为 RxBus
public interface Bus {
void register(@NonNull Object observer);
<T> CustomSubscriber<T> obtainSubscriber(@NonNull Class<T> eventClass, @NonNull Consumer<T> receiver);
<T> void registerSubscriber(@NonNull Object observer, @NonNull CustomSubscriber<T> subscriber);
void unregister(@NonNull Object observer);
void post(@NonNull Object event);
}
进入工作文件,但我得到空值
工作class:
public class GetLatestRepositories extends Job implements JobManagerInjectable {
@Inject
transient GithubService githubService;
@Inject
transient Bus eventBus;
private Call<List<GithubRepo>> repositoryCall;
public GetLatestRepositories() {
super(new Params(JobPriority.MID).requireNetwork().persist());
eventBus.register(this); /* IS NULL*/
}
@Override
public void onAdded() {
}
...
@Override
public void inject(ApplicationComponent component) {
component.inject(this);
}
}
ApplicationComponent
@ActivitiesScope
@Component(dependencies = GithubApplicationComponent.class)
public interface ApplicationComponent {
void inject(ActivityRegister activityRegister);
void inject(ActivityStartUpApplication activityStartUpApplication);
void inject(GetLatestRepositories getLatestRepositories);
}
GithubApplicationComponent
@AlachiqApplicationScope
@Component(
modules = {
UserInformationModule.class,
NetworkServiceModule.class,
PicassoModule.class,
JobManagerModule.class,
RxModule.class,
ActivityModule.class
}
)
public interface GithubApplicationComponent {
Picasso getPicasso();
GithubService getGithubService();
JobManager getJobManager();
Bus getBus();
}
接收模块
@Module
public class RxModule {
@Provides
@AlachiqApplicationScope
public Bus getBus() {
return new RxBus();
}
}
在 RxModule
而不是:
return new RxBus();
做:
return BusProvider.getInstance();