2016-06-22 27 views
0

问题:
对于某些通信方案,我使用的是EventBus。 我有一个事件已经被我的应用程序中的不同组件激活并订阅。 现在我需要一个activity来订阅该事件。不幸的是它没有达到。EventBot:订阅活动未达到事件

问:
我怎样才能做到这一点的activity不正确认购事件,要么?注册activity时出现问题吗?

注:
我发现post是建议使用在onStart()和的onStop()事件。

我的活动类:

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. 
    } 

    (...) 
} 

EventBus类:

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; 
    } 
} 

回答

1

可能是因为你有错误的方式来注销然后EventBus在onStop()
改成这样:

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

@Override 
public void onStop() { 
    EventBus.getDefault().unregister(this); 
    super.onStop(); 
} 

然后确保你的用户活动,有接收事件:

@Subscribe(threadMode = ThreadMode.MAIN) 
public void characteristicsChangeByUser(IntentChangeByUser intentChangeByUser) { 
    // Do something here. 
    Log.d("Activity", "IntentChangeByUser Event received"); 
}