如何在android中发送我们可以选择订阅者的事件?

时间:2016-10-06 09:57:41

标签: java android publish-subscribe greenrobot-eventbus

我有4个课程都订阅了活动消息。我想只向2个类发送事件消息。 EventBus正在向所有4个班级发送事件。

1 个答案:

答案 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