Java EventBus将消息乘以活动计数
我正在使用它,但对如何使用它有一些误解 在我的应用程序中,我有4个活动:MainActivity和3个other。每个活动在应用程序中都有自己的角色,MainActivity通过COM端口保持连接并发送/接收消息。所以,当收到消息时,它通过EventBus发送到当前的工作活动。当其他活动需要向COM端口发送消息时,它也会通过EventBus向MainActivity发送消息。问题是,当我在一个活动中工作时——所有的工作都很好,但当我在其他活动中尝试做一些事情时——来自EventBus的消息是双重的。还有更多——当我尝试在第三个活动中工作时——消息是乘以3,以此类推 下面是一些代码:Java EventBus将消息乘以活动计数,java,android,event-bus,greenrobot-eventbus,Java,Android,Event Bus,Greenrobot Eventbus,我正在使用它,但对如何使用它有一些误解 在我的应用程序中,我有4个活动:MainActivity和3个other。每个活动在应用程序中都有自己的角色,MainActivity通过COM端口保持连接并发送/接收消息。所以,当收到消息时,它通过EventBus发送到当前的工作活动。当其他活动需要向COM端口发送消息时,它也会通过EventBus向MainActivity发送消息。问题是,当我在一个活动中工作时——所有的工作都很好,但当我在其他活动中尝试做一些事情时——来自EventBus的消息是双重
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向另一个活动发送消息
EventBus.getDefault().post(new MessageEventFromMain(messageFromSerial));
@Subscribe(threadMode = ThreadMode.MAIN)
public void onMessageEventFromIntent(MessageEventFromIntent event)
{
//code to do when get message from intent
}
并从MainActivity中的其他活动捕获事件
EventBus.getDefault().post(new MessageEventFromMain(messageFromSerial));
@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的问题,但没有找到任何答案
很抱歉出错。在活动关闭后从
MessageEventFromIntent
事件中注销MainActivity
。在活动关闭后从MessageEventFromIntent
事件中注销MainActivity
。我怀疑问题在于当我打开活动并尝试发送消息时它正在通过“new MessageEventFromIntent”方法创建新的MessageEventFromIntent对象,而不是在活动关闭时删除它。因此我需要对该对象进行null引用,以便垃圾收集器可以删除它。但是怎么做呢?活动关闭后,从MessageEventFromIntent事件中注销MainActivity?是的,确实有问题!刚刚检查了HPROF查看器显示。我怀疑问题在于,当我打开Activity并尝试发送消息时,它正在通过“new MessageEventFromIntent”方法创建新的MessageEventFromIntent对象,而不是在Activity关闭时删除它。因此,我需要对该对象进行空引用,以便垃圾收集器可以删除它。但是怎么做呢?活动关闭后,从MessageEventFromIntent事件中注销MainActivity?是的,确实有问题!刚刚检查了HPROF查看器显示。