2017-06-15 12 views
0

私はGreenrobot EventBus 3.0.0を使用しています。 Iは、クラスAを有し、それがEvent.InクラスAIがそのオブジェクト変更されたオブジェクトを受信して​​次のアクティビティBに渡し同じクラスの同じイベントを購読して公開する

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


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


@Subscribe(sticky = true, threadMode = ThreadMode.MAIN) 
    public void onRowClicked(RequestDTO requestDTO) { 
     if (requestDTO!= null) { 
      EventBus.getDefault().post(requestDTO); 
      startActivity(new Intent(this, ActivityB.class)); 
     } 

    } 

問題は、それが無限ループに陥っていることである。なぜなら、パブリッシャとサブスクライバ同じevent.Howその問題を解決するには?

+0

別のタイプのイベントを投稿してください。そのアプローチの問題点は何ですか? – azizbekian

答えて

0

これは親切なハッキーのようです。あなたは本当に何をしたいですか?イベントの2回目の投稿を呼び出す直前に、現在のアクティビティを登録解除することができます。しかし、あなたの2番目の活動は、あなたのイベントが来るときに、Androidシステムによって準備されることは確かですか?これは、EventBusコールバックの場合には当てはまりません。もし私があなただったら、私は平凡な古いインテントのデータを渡すでしょう。または、このダイナミクスが本当に必要な場合は、手作業であなたのActivityBのonRowClickedメソッドを呼び出すことができます。RequestDTOオブジェクト