EventBus 3.0.0を使い始めています。
サービスからアクティビティに送信される 3 つのスティッキー イベントがあります。
- 行動開始
- アクションの進行
- アクション終了
私はメインスレッドでイベントを聞いています:
@Subscribe(sticky = true, threadMode = ThreadMode.MAIN)
public void on...Event(... event) {
...
}
サービスはイベントを順番に送信しますstarted-progressN-..-progressM-finished
。サブスクライブされたアクティビティは、イベントに従って UI を更新します。
アクティビティがローテーションされた後、送信された順序でスティッキー イベントを取得することを期待しています。それ以外の場合は、UI が壊れます (開始すると進行状況が 0 に設定されるため)。イベントの順序は EventBus によって保証されていますか (これらすべてのイベントに対して同じ EventBus、同じ受信者スレッド、同じサブスクライバーを使用していると仮定します)?
私のテストによると、それは保証されておらず、それは機能/問題ですよね?
回転前:
07-27 11:27:55.254 27910-27910/ app D/App﹕ status Compilation started ...
07-27 11:27:55.254 27910-27910/ app D/App﹕ compile progress 0%
07-27 11:27:55.354 27910-27910/ app D/App﹕ compile progress 20%
07-27 11:27:55.354 27910-27910/ app D/App﹕ compile progress 30%
07-27 11:27:55.354 27910-27910/ app D/App﹕ compile progress 40%
07-27 11:27:55.844 27910-27910/ app D/App﹕ compile progress 50%
ローテーション後 (スティッキー イベントの再送信):
07-27 11:27:59.554 27910-27910/ app D/App﹕ compile progress 50%
07-27 11:27:59.554 27910-27910/ app D/App﹕ status Compilation started ...