EventBot:事件未达到订阅 activity
EventBot: subscribing activity is not reached by Event
问题:
对于某些通信场景,我使用 EventBus。
我有一个事件已经被我的应用程序中的不同组件成功触发和订阅。
现在我需要一个 activity
来订阅那个事件。不幸的是,它没有达到。
问题:
我怎样才能实现 activity
也能正确订阅事件?注册 activity
有问题吗?
注:
我发现 建议使用 onStart() 和 onStop() 事件。
我的activityclass:
public class MachineActivity extends AppCompatActivity{
(...)
@Override
protected void onStart() {
super.onStart();
EventBus.getDefault().register(this);
}
@Override
protected void onStop() {
super.onStop();
EventBus.getDefault().unregister(this);
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void characteristicsChangeByUser(IntentChangeByUser intentChangeByUser) {
// Do something here.
}
(...)
}
事件总线class:
public class IntentChangeByUser {
int position;
int value;
public IntentChangeByUser(int position, int value){
this.position = position;
this.value = value;
}
public int getPosition() {
return position;
}
public int getValue() {
return value;
}
}
可能是因为你在onStop()
.
中注销EventBus的方式不对
更改为:
@Override
public void onStart() {
super.onStart();
EventBus.getDefault().register(this);
}
@Override
public void onStop() {
EventBus.getDefault().unregister(this);
super.onStop();
}
然后确保在您的订阅者 Activity 中收到了事件:
@Subscribe(threadMode = ThreadMode.MAIN)
public void characteristicsChangeByUser(IntentChangeByUser intentChangeByUser) {
// Do something here.
Log.d("Activity", "IntentChangeByUser Event received");
}
问题:
对于某些通信场景,我使用 EventBus。
我有一个事件已经被我的应用程序中的不同组件成功触发和订阅。
现在我需要一个 activity
来订阅那个事件。不幸的是,它没有达到。
问题:
我怎样才能实现 activity
也能正确订阅事件?注册 activity
有问题吗?
注:
我发现
我的activityclass:
public class MachineActivity extends AppCompatActivity{
(...)
@Override
protected void onStart() {
super.onStart();
EventBus.getDefault().register(this);
}
@Override
protected void onStop() {
super.onStop();
EventBus.getDefault().unregister(this);
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void characteristicsChangeByUser(IntentChangeByUser intentChangeByUser) {
// Do something here.
}
(...)
}
事件总线class:
public class IntentChangeByUser {
int position;
int value;
public IntentChangeByUser(int position, int value){
this.position = position;
this.value = value;
}
public int getPosition() {
return position;
}
public int getValue() {
return value;
}
}
可能是因为你在onStop()
.
中注销EventBus的方式不对
更改为:
@Override
public void onStart() {
super.onStart();
EventBus.getDefault().register(this);
}
@Override
public void onStop() {
EventBus.getDefault().unregister(this);
super.onStop();
}
然后确保在您的订阅者 Activity 中收到了事件:
@Subscribe(threadMode = ThreadMode.MAIN)
public void characteristicsChangeByUser(IntentChangeByUser intentChangeByUser) {
// Do something here.
Log.d("Activity", "IntentChangeByUser Event received");
}