2016-06-22 50 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"); 
}