現在、Android アプリケーションからの Web サービス呼び出しに取り組んでいます。呼び出しと結果は IntentService 内で処理されます。今のところ、ResultReceiver を拡張したクラス (MyReceiver) を使用しています。
public class ResultReceiverWS extends ResultReceiver {
private Receiver mReceiver;
public ResultReceiverWS(Handler handler) {
super(handler);
}
public void setReceiver(Receiver receiver) {
mReceiver = receiver;
}
public interface Receiver {
public void onReceiveResult(int resultCode, Bundle resultData);
}
@Override
protected void onReceiveResult(int resultCode, Bundle resultData) {
if (mReceiver != null) {
mReceiver.onReceiveResult(resultCode, resultData);
}
}
}
MyReceiver.Receiver を実装するアクティビティから、上記のコードのようにバンドル内のクラスのインスタンスを渡します。
MyReceiver receiver = new MyReceiver (new Handler());
receiver.setReceiver(this);
Intent call = new Intent(getApplicationContext(), ClientWS.class);
call.putExtra(RECEIVER, receiver);
call.putExtra(ACTION, MYMETHOD);
startService(call);
問題は、レシーバーがアクティビティ スレッドに接続されていることです。アクティビティが強制終了された場合、(画面を回転させるなどして) 再作成された場合、レシーバーは無人地帯を指します ...
ですから、私の質問は、このケースをどのように処理するかです。BroadcastReceiver について考えましたが、よくわかりません。
どんな提案でも大歓迎です。