EventBus将消息乘以活动计数

时间:2017-06-21 16:30:07

标签: java android event-bus greenrobot-eventbus

我使用greenrobot EventBus并对如何使用它有一些误解。

在我的应用程序中,我有4个活动:MainActivity和另外3个。每个Activity都在app中拥有自己的角色,MainActivity通过COM端口保持连接并发送/接收消息。因此,当收到消息时,它会通过EventBus发送到当前的工作活动。当其他Activity需要向COM端口发送消息时,它也会通过EventBus向MainActivity发送消息。问题是,当我在一个活动中工作时 - 一切正常,但当我尝试在其他活动中做某事时 - 来自EventBus的消息被重复。还有更多 - 当我尝试在第三个活动中工作时 - 消息乘以3,依此类推。

这里有一些代码:

public class ManualControl extends AppCompatActivity 
{
 @Override
 protected void onCreate(Bundle savedInstanceState) 
 {
     super.onCreate(savedInstanceState);
     //my other code here
 }

 @Override
 protected void onPause()
 {
     super.onPause();
     EventBus.getDefault().unregister(this);
 } 

 @Override
 public void onResume()
 {
     super.onResume();
     EventBus.getDefault().register(this);
 }

 @Subscribe(threadMode = ThreadMode.MAIN)
 public void onEvent(MessageEventFromMain event)
 {
  //code to do when get message from MainActivity
 };    

 private void sendMessage(String messageID, String messageName)
 {
     EventBus.getDefault().post(new MessageEventFromIntent(messageID, messageName));
 }
}

此方法用于将消息从MainActivity

发送到另一个Activity
    EventBus.getDefault().post(new MessageEventFromMain(messageFromSerial));

从MainActivity中的其他活动中捕获事件

    @Subscribe(threadMode = ThreadMode.MAIN)
    public void onMessageEventFromIntent(MessageEventFromIntent event)
    {
     //code to do when get message from intent
    }

正如您所看到的,我取消注册onPause()并注册onResume(),但是当我关闭此活动并再次启动它时,消息会重复。

示例:

第一次使用:

    55017031011_TURN_STRAIGHT27

第二次使用:

    55017031011_TURN_STRAIGHT2755017031011_TURN_STRAIGHT27

我已经解决了gitHub问题,但没有找到任何答案。

抱歉犯了错误。

1 个答案:

答案 0 :(得分:0)

活动关闭后,从MainActivity事件中注销MessageEventFromIntent