EventBusの通知優先度の設定について
DialogFragment
を親クラスとするConfirmDialogFragment
を作成しました。
このダイアログは名前の通り確認用のダイアログで、「〜しますか?」というメッセージに対して[はい]を選んだ時に〜の処理を行います。
確認用のダイアログには2パターンがあり、それぞれ処理も異なります。
そこで、その処理を呼び出し元に定義できるように[はい]が押されたらEventBus
で呼び出し元クラスに通知してそこで処理を行うようにしようと思いました。
使用しているEventBus
はde.greenrobot:eventbus:2.4.0
です。
確認ダイアログを表示するクラスはMainActivity
とSettingWebView
の2つです。
MainActivity
が確認ダイアログを表示する時は戻るボタンでアプリを終了させようとする時です。
MainActivity
はもともと"非同期のログイン処理が終わったから画面を切り替えてほしい"などのイベントを受け取るようにしているので、onStart
で登録してonStop
で登録削除するようにしていました。
SettingWebView
が確認ダイアログを表示する時は画像をダウンロードをしようとする時です。
SettingWebView
の方は特になにかしらEventBus
からのイベントを受け取るようにしていません。
そこで、SettingWebView
の方では確認ダイアログ表示前に登録してイベント受け取り後に登録削除することにしました。
EventBus
ではregister(Object subscriver,int priority)
を用いて優先度を設定できるとのことで、SettingWebView
の優先度をMainActivity
より高くすれば問題ないだろうと思っていました。
デフォルトが0に設定されていると書いてあり、適当にSettingWebView
を登録する時に1に指定してみたのですが、MainActivity
が受け取ってしまいました。
受け取り元メソッドはそれぞれonEvent
とonEventMainThread
を試してみたのですが、どちらでもうまくいきませんでした。
"数値が大きい方が優先度が高い"という考えが違うのかと思い、MainActivity
はデフォルト(0)でSettingWebView
は-1で登録してみたのですが、それでもうまくいきませんでした。
"とにかく0が一番優先度高いのかも?"とMainActivity
は0以外でSettingWebView
は0で登録してみたのですが、それでもうまくいきませんでした。
-1,0,1以外の数値も試してみたのですが、どれもうまくいきませんでした。
どうすればSettingWebView
で確認ダイアログからのイベントを受け取れるようになるでしょうか?