我目前正在处理来自Android应用程序的webservice调用。 调用和结果在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的Activity传递了类的实例,就像上面的代码一样:
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,但我不确定。
欢迎任何建议。
答案 0 :(得分:2)
使用LocalBroadcastManager
。
或者,如果此Web服务调用的结果只会被请求它的活动使用,请切换到由保留片段管理的AsyncTask
,在这种情况下,您可以更自然地使用UI
或者,如果您需要让用户知道结果,即使您的用户界面不在前台,也请使用ordered broadcast pattern。