私はレトロフィットサービスを持っています:
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 は常に null です。MyTask はモジュールの @Module( injects = {...}) に既に追加されていますが。
だから私はタスクのコンストラクターにコンテキストを渡し、私のタスクに次のようなものを注入しようとしました:
MyApplication.get(context).inject(this);
しかし、それでも mService は常に null です。
また、代わりに MyService をアクティビティに挿入し、それを MyTask の単なるフィールドにしてから、既に作成されたものを渡す場合。MyTask はテープ タスク (square のテープ ライブラリ) であるため、次のようにシリアル化すると (当然のことながら) 失敗します。
Caused by: java.lang.UnsupportedOperationException: Attempted to serialize java.lang.Class: MyService. Forgot to register a type adapter?
Tape Task にレトロフィット サービス クラスを正しく挿入する方法はありますか?
正しく説明できたかどうかわかりません..必要に応じて追加情報を提供できます。
ありがとう。