2

我有改造服务:

public interface MyService {
    @POST("/dosomething")
    String doSomething(@Part("param") MyType param);
}

在匕首模块中:

@Provides @Singleton
MyService provideService(RestAdapter restAdapter){
    return restAdapter.create(MyMeService.class);
}

//请注意,该模块也提供了restAdapter。

在我正在使用该服务的磁带任务中,我尝试了:

    public class MyTask implements Task<MyTask.Callback> {

        //... omitted for brevity 

        @Inject
         MyService mService;

         @Override
         public void execute(final Callback callback) {
            new Thread(new Runnable() {
              @Override
              public void run() {
                 mService.doSomething(new MyType(...));
                 //...
              }
        }
    }

但有了这个 mService 总是空的。虽然 MyTask 已经添加到模块的 @Module(injects = {...}) 中。

所以我尝试在任务的构造函数中传递上下文并用类似的东西注入我的任务:

MyApplication.get(context).inject(this);

但仍然让 mService 始终为空。

同样,当在我的活动中注入 MyService 并将其设置为 MyTask 中的一个字段,然后将其传递给已创建的字段时。由于 MyTask 是一个 Tape 任务(square 的磁带库),它在序列化时失败(可以理解):

Caused by: java.lang.UnsupportedOperationException: Attempted to serialize java.lang.Class: MyService. Forgot to register a type adapter?

那么有没有办法在 Tape Task 中正确注入改造服务类?

我不确定我的解释是否正确.. 如果需要,我可以提供更多信息。

谢谢。

4

0 回答 0