2016-05-27 44 views
0

GreenRobot EventBusを使用して、アクティビティからサービスにイベントを投稿しようとしています。 しかし、私はlogcatは、次のメッセージ表示されるイベントをポストしようとすると:ここGreenRobot EventBusエラー:イベントに登録されている登録者がいません

No subscribers registered for event class com.example.dhaval.homeexamples.CallBackEvent 
No subscribers registered for event class org.greenrobot.eventbus.NoSubscriberEvent 

を私はイベントをポストするための活動に使用されるコードです:

EventBus.getDefault().post(new CallBackEvent(1)); 

CallBackEvent、次のとおりです。

public class CallBackEvent { 
    private int a; 
    public CallBackEvent(int a) { 
    this.a = a; 
    } 
} 

私のサービスクラスは以下のとおりです。

public class BackService extends Service{ 

    @Nullable 
    @Override 
    public IBinder onBind(Intent intent) { 
    return null; 
    } 

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

    @Override 
    public int onStartCommand(Intent intent, int flags, int startId) { 
    return super.onStartCommand(intent, flags, startId); 
    } 

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

    @Subscribe 
    public void onEvent(CallBackEvent callBackEvent){ 
    Log.d("service", "CallBackEvent : called"); 
    } 
} 

どうしてですか?なぜなら、私がサービスから活動へのイベントを投稿するとき、それはうまく動作しているからです。しかし、私はこのコード(サービスから活動へ)を試しても機能していません。

+0

サービスからイベントへのイベントの投稿を試みていますが、この問題が発生しました。私は今何をする必要があるか分かりません – Eenvincible

答えて

0

アクティビティがイベントを通知するときにサービスが実際に実行されていることを確認します。

また、イベントをサービスに投稿しようとするのではなく、意図を持って開始するのはなぜですか?

1

私は次のようにコードがあり、問題を解決:

if(!EventBus.getDefault().hasSubscriberForEvent(CallBackEvent.class)) { 
     EventBus.getDefault().register(this); 
} 
0

を原因@jdsjlzx
の答えに私は単純にイベントを送信していない別の方法

if (EventBus.getDefault().hasSubscriberForEvent(CharSequence.class)) { 
    EventBus.getDefault().post(someCharSequenceVar); 
} 

でそれを行っています加入者が登録されていない場合

関連する問題