2

ご存知かもしれませんが、BroadcastReceiverクラスのonReceive()メソッドのドキュメントには次のように書かれています。

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

ブロードキャストを受信したときにユーザーにトーストを表示したいのですが、トーストが「ポップアップダイアログ」と見なされるのか、クラスダイアログのオブジェクトのみが参照しているのかわかりません。

この関数内でToastが使用されているコードのサンプルをたくさん見てきましたが、それが悪い習慣なのか、それともパフォーマンスに大きな影響を与えるのかはわかりません。

私が知りたいのは、この関数内にToastを作成する必要があるかどうか、作成しない場合はどのように作成するかです(Toastを拡張し、インテントを使用してそれを呼び出しますか?)。

4

2 に答える 2

5

トーストはポップアップダイアログとは見なされません。通知バーの通知のような通知方法と見なされます。私自身を含め、多くのアプリがBroadcastReceiversでそれを使用しています。日付まで、トーストがどのデバイスにも表示されることによるパフォーマンスへの影響は見たことがありません。

BroadcastReceiverからのトーストを完全に表示できるはずです。

于 2013-01-24T08:32:08.213 に答える
3

Toastからを使用するのは完全に安全BroadcastReceiverです。

Toastただし、アプリケーションのコンテキスト外で表示された場合、aは煩わしいと見なされることに注意してください。これは、から使用した場合に発生する可能性がありBroadcastReceiverます。

より良いユーザーエクスペリエンスのために、通知を使用してください。

于 2013-01-24T08:36:45.010 に答える