3

RoboGuiceがEventを起動すると、イベントコールバックはどこで、どのスレッドで実行されますか?たとえば、do(@Observes OnUpdateUiEvent e)を持つアクティビティがあります。新しいOnUpdateUiEvent( "data")を起動するバックグラウンドスレッドもあります。だから、私のdo()メソッドは私が理解したようにbgスレッドで実行されますか?AndroidAnnotationsの@Backgroundでdo()に注釈を付けるとどうなりますか?プリプロセッサはrunInUiThread()でdo()を呼び出す必要がありますか?

すべてが正しければ、このパターンがスレッド間の通信の最も簡単な方法を提供すると思います。

4

1 に答える 1

6

私があちこちで見ることができる限り、@Observes(EventThread.CURRENT)、@Observes(EventThread.UI)、または @Observes(EventThread.BACKGROUND) を使用して、RoboGuice でスレッドがイベントと混合する方法を指定できます。

デフォルトは「CURRENT」です。これは、何も指定しない場合、イベントをリッスンするメソッドが、イベントを受け取るメソッドと同じスレッドで実行されることを意味します。

そうです、バックグラウンド スレッドからイベントを起動すると、do() はバックグラウンド スレッドで実行されます。

do() メソッドに @Background を追加すると、イベントを発生させたスレッドとは別のスレッドで常に実行されます。

よくわからない場合は、ブレークポイントを設定してスレッド名を確認してください :-) 。

それはあなたの質問に答えましたか?

于 2011-12-11T23:12:16.793 に答える