EventBus docによると、スレッドのEventBus
配信に使用するスレッド モードには 4 つのタイプがあります。
onEvent()
- 投稿スレッド
- 単純なタスクに適しています
onEventMainThread()
- メインスレッド
- 別名UIスレッド
- UIの変更に適しています
onEventBackgroundThread()
- 背景トレッド
- シングル スレッドを使用して、イベントを順次配信します。
- 適度な時間を必要とする実行に適しています。
onEventAsync()
- 非同期
- 別々のスレッドを使用します。
- より長い時間を必要とする実行に適しています
質問
onEventBackgroundThread()
overを使用する前にonEventAsync()
、またはその逆を使用する前に検討すべき基準は何ですか? 明らかな利点がある一方を他方よりも使用する例は何ですか?次の各関数は、どのスレッド モードを使用する必要がありますか?
デバイス ステータスの取得 -- デバイスの GPS 位置情報(
android.location
)、インターネット接続ステータス(ConnectivityManager
、NetworkInfo
)。テキスト (JSON など) を受信する単純な HTTP 要求を作成すると、1000 ミリ秒から 5000 ミリ秒の間、平均 2000 ミリ秒かかります。
ファイルサイズが 50kb から 1500kb の画像をロードするための単純な HTTP リクエストを作成します (正確なサイズは、サーバーにリクエストを送信する前に、クライアントには不明です)。
内部データベースへのデータのキャッシュ (例:
SharedPreferences
、SQLite
など)。