我有2个使用绑定交换数据的服务(服务A和B)。 2个服务(服务A)中的一个可以绑定到多个服务(现在只有服务B,但我还需要添加其他2个服务,C和D)。所有服务都以相同的方式交换数据并使用相同的消息。
我想知道是否可以检索发送邮件的服务的名称。
特别是我的服务A在收到来自B的消息时需要存储此信息,因此当它从C或D收到相同的消息时表现不同。是否可以在附加到Message的包中添加String?
这是我想在服务A中获取此信息的代码
class myHandler extends Handler {
@Override
public void handleMessage(Message msg) {
String senderName;
switch (msg.what) {
case REGISTER:
senderName = ???
addToRecord(senderName);
sendConfirm(msg.replyTo, SUCCESS);
break;
case UNREGISTER:
senderName = ???
removeFromRecord(senderName);
sendConfirm(msg.replyTo, SUCCESS);
break;
default:
super.handleMessage(msg);
}
}
}
答案 0 :(得分:0)
消息的结构如:
Message{
what,arg1,arg2,obj,when,data,replyTo.
}
和信使的绑定:
oneway interface IMessenger {
void send(in Message msg);
}
因此,您的后台服务无法获取原始服务的名称。
正如您所说,将String中的String放入消息可以解决此问题。
在某些情况下,为避免虚假名称,您可以在绑定时将特定字符串分配给原始服务。让他们在调用远程方法时重新发送给您的服务。