在同一个 class 中处理多个 Intent 服务(从多个服务接收数据)
Handle multiple Intent Services within the same class (Receive data back from multiple services)
我在 register.class
的开头初始化了 2 public 接收器变量
public RegisterReceiver rReceiver;
public ConvertAddressToLatLongReceiver catllReceiver;
然后在 onCreate() 中我将它们定义如下
rReceiver = new RegisterReceiver(new Handler());
rReceiver.setReceiver(this);
catllReceiver = new ConvertAddressToLatLongReceiver(new Handler());
catllReceiver.setReceiver(this);
这两个接收器都在 class 的末尾实现了 onReceiveResult()。有没有办法区分哪个服务正在调用 onReceiveResult() 函数,比如区分在 onClick() 中单击了哪些按钮?
已编辑:
这是我的接收器之一 classes.
import ca.amoh.track.trackingnetwork.interfaces.Receiver;
public class RegisterReceiver extends ResultReceiver {
private Receiver rReceiver;
public RegisterReceiver(Handler handler) {
super(handler);
}
public void setReceiver(RegisterScreen rReceiver) {
this.rReceiver = rReceiver;
}
@Override
protected void onReceiveResult(int resultCode, Bundle resultData) {
if (rReceiver != null) {
rReceiver.onReceiveResult(resultCode, resultData);
}
}
}
这是onReceiveResult
方法的结构:
protected void onReceiveResult(int resultCode, Bundle resultData) {
super.onReceiveResult(resultCode, resultData);
}
现在您可以使用 resultCode
参数来区分两个结果,或者使用带有一些标记信息的 Bundle
参数。
编辑
如果您使用 resultCode
那么在结果之间切换会稍微容易一些:
protected void onReceiveResult(int resultCode, Bundle resultData) {
switch(resultCode){
case 100: \ result from one receiver
...
case 200: \ result from another receiver
...
}
}
我在 register.class
的开头初始化了 2 public 接收器变量public RegisterReceiver rReceiver;
public ConvertAddressToLatLongReceiver catllReceiver;
然后在 onCreate() 中我将它们定义如下
rReceiver = new RegisterReceiver(new Handler());
rReceiver.setReceiver(this);
catllReceiver = new ConvertAddressToLatLongReceiver(new Handler());
catllReceiver.setReceiver(this);
这两个接收器都在 class 的末尾实现了 onReceiveResult()。有没有办法区分哪个服务正在调用 onReceiveResult() 函数,比如区分在 onClick() 中单击了哪些按钮?
已编辑: 这是我的接收器之一 classes.
import ca.amoh.track.trackingnetwork.interfaces.Receiver;
public class RegisterReceiver extends ResultReceiver {
private Receiver rReceiver;
public RegisterReceiver(Handler handler) {
super(handler);
}
public void setReceiver(RegisterScreen rReceiver) {
this.rReceiver = rReceiver;
}
@Override
protected void onReceiveResult(int resultCode, Bundle resultData) {
if (rReceiver != null) {
rReceiver.onReceiveResult(resultCode, resultData);
}
}
}
这是onReceiveResult
方法的结构:
protected void onReceiveResult(int resultCode, Bundle resultData) {
super.onReceiveResult(resultCode, resultData);
}
现在您可以使用 resultCode
参数来区分两个结果,或者使用带有一些标记信息的 Bundle
参数。
编辑
如果您使用 resultCode
那么在结果之间切换会稍微容易一些:
protected void onReceiveResult(int resultCode, Bundle resultData) {
switch(resultCode){
case 100: \ result from one receiver
...
case 200: \ result from another receiver
...
}
}