在同一个 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
             ...
    }
}