我有4个课程都订阅了活动消息。我想只向2个类发送事件消息。 EventBus正在向所有4个班级发送事件。
答案 0 :(得分:3)
使用android JPost可以很容易地解决这个用例 库。
JPost可让您定义可以发送事件的频道。频道订阅者仅接收该消息。您还可以选择需要接收消息的订阅者。
要实现此目的,请执行以下步骤:
第1步:创建公共频道
public static final int publicChannel1 = 1;
.....
try {
JPost.getBroadcastCenter().createPublicChannel(ChannelIds.publicChannel1);
}catch (AlreadyExistsException e){
e.printStackTrace();
}
步骤2:使用subscriberIds
添加此频道的订阅者
public static final int SUBSCRIBER_A_ID = 1;
....
try {
JPost.getBroadcastCenter().addSubscriber(ChannelIds.publicChannel1, subscriberA, SUBSCRIBER_A_ID);
}catch (Exception e){
e.printStackTrace();
}
同样地将所有4个类添加到具有不同subscriberIds的此通道。
步骤3:将Message事件广播到选定的2个类。
try {
JPost.getBroadcastCenter().broadcastAsync(ChannelIds.publicChannel1, message, SubsciberA.SUBSCRIBER_A_ID, SubsciberB.SUBSCRIBER_B_ID);
}catch (JPostNotRunningException e){
e.printStackTrace();
}
步骤5:在订户类中接收事件。
@OnMessage(channelId = ChannelIds.publicChannel1)
private void onMessage(Message msg){
System.out.println(msg.getMsg());
}
注意:如果在Android中您需要更新UI,请将@OnUiThread添加到 这个方法
更多细节请参阅 - >的 https://github.com/janishar/JPost 强>