EventBus 将消息乘以活动计数
EventBus multiplying messages by count of Activities
我正在使用 greenrobot EventBus 并且对如何使用它有一些误解。
在我的应用程序中,我有 4 个活动:主要 Activity 和其他 3 个。每个 Activity 在应用程序中都有自己的角色,MainActivity 通过 COM 端口和 sends/receives 消息保持连接。因此,当收到消息时,它会通过 EventBus 发送到当前工作 activity。当其他 Activity 需要向 COM 端口发送消息时,它也会通过 EventBus 向 MainActivity 发送消息。问题是,当我在一个 activity 中工作时 - 一切正常,但当我尝试在其他活动中做某事时 - 来自 EventBus 的消息被复制。还有更多 - 当我尝试在第三个工作时 activity - 消息乘以 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));
并从 Main 中的其他 Activity 捕获事件Activity
@Subscribe(threadMode = ThreadMode.MAIN)
public void onMessageEventFromIntent(MessageEventFromIntent event)
{
//code to do when get message from intent
}
如您所见,我正在取消注册 onPause() 并注册 onResume(),但是当我关闭此 activity 并再次启动时,消息重复。
示例:
第一次使用:
55017031011_TURN_STRAIGHT27
第二次使用:
55017031011_TURN_STRAIGHT2755017031011_TURN_STRAIGHT27
我已阅读 gitHub 个问题,但未找到任何答案。
对于错误,我们深表歉意。
在 activity 关闭后从 MessageEventFromIntent
事件中注销 MainActivity
。
我正在使用 greenrobot EventBus 并且对如何使用它有一些误解。
在我的应用程序中,我有 4 个活动:主要 Activity 和其他 3 个。每个 Activity 在应用程序中都有自己的角色,MainActivity 通过 COM 端口和 sends/receives 消息保持连接。因此,当收到消息时,它会通过 EventBus 发送到当前工作 activity。当其他 Activity 需要向 COM 端口发送消息时,它也会通过 EventBus 向 MainActivity 发送消息。问题是,当我在一个 activity 中工作时 - 一切正常,但当我尝试在其他活动中做某事时 - 来自 EventBus 的消息被复制。还有更多 - 当我尝试在第三个工作时 activity - 消息乘以 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));
并从 Main 中的其他 Activity 捕获事件Activity
@Subscribe(threadMode = ThreadMode.MAIN)
public void onMessageEventFromIntent(MessageEventFromIntent event)
{
//code to do when get message from intent
}
如您所见,我正在取消注册 onPause() 并注册 onResume(),但是当我关闭此 activity 并再次启动时,消息重复。
示例:
第一次使用:
55017031011_TURN_STRAIGHT27
第二次使用:
55017031011_TURN_STRAIGHT2755017031011_TURN_STRAIGHT27
我已阅读 gitHub 个问题,但未找到任何答案。
对于错误,我们深表歉意。
在 activity 关闭后从 MessageEventFromIntent
事件中注销 MainActivity
。