2016-07-15 7 views
0

私のアプリケーションクラスは主に現在のアクティビティのコンテキストや他のものを扱います(トーストやダイアログなどを表示するようなもの)。 アプリケーションクラスを使用している別のものは、ブロードキャスト受信者を登録するためのものです。アクティビティのコンテキストではなくアプリケーションのものです。 私が知りたいことは: ブロードキャストレシーバーは私のUI(活動の)スレッドをブロックするでしょうか? (私はアプリケーション経由でレシーバに電話しているので、何か違いはありますか?) また、(アプリケーションコンテキストから)ハンドラ経由でレシーバを登録することもできます。私はそれをすべきか?または、私の主なスレッドをブロックしない他の方法もありますか? ありがとうございます。あなたが明示的に求められない限り、それは[registerReceiver(BroadcastReceiver, IntentFilter, String, android.os.Handler)](https://developer.android.com/reference/android/content/Context.html#registerReceiver(android.content.BroadcastReceiver、android.content.IntentFilter、java.lang.Stringで、アンドロイドを使用して別のスレッドでスケジュールされるためアプリケーションコンテキスト経由でブロードキャスト受信機を登録する

+0

'BroadcastReceiver'は常にUIスレッドで実行されます。 – nukeforum

答えて

0

BroadcastReceiverOnReceive()は常に、そのプロセスのメインスレッド内で呼び出されます。 os.Handler))。

メインスレッドで実行するときは、長時間実行する操作は実行しないでください(レシーバーがブロックされ、候補が強制終了される前に、システムが許容するタイムアウトは10秒です)。 onReceive()の実装では、ポップアップダイアログを起動できません。

関連する問題