2

数日前、単一のアプリケーション内でブロードキャストを送信するためのより優れたメカニズムがあることを読みましたLocalBroadcastManager

うまく機能します (標準の放送と同じように..)。しかし、昨日、マニフェストで定義されているレシーバーにブロードキャストを送信できないことがわかりました(一時的に標準のアクティビティのsendBroadcastメソッドを使用するように切り替えたところ、機能しました)。

私がこれを必要とする理由(より好ましい方法があれば修正してください)は次のとおりです。

ファイルをダウンロードしたいとしましょう。サービスを使用します。これは、Android が私たちに求めている方法だからです。OK、今度はアクティビティの進行状況を表示 (および定期的に更新) したいと思います。したがって、サービスは私のアクティビティにブロードキャストを送信し、アクティビティはそれらを受信するために登録する必要があります。ブロードキャストを処理するための推奨される方法は、 に登録しonResume()、 に登録解除することonPause()です。ここで、ユーザーがプログレスバーがゆっくりと移動するのに飽きて、ホームを押して別のことをしたとします。後で彼は戻ってきて、ダウンロードの現在のステータスを見たいと思っていますが、彼がアプリケーションを離れた瞬間にブロードキャストから登録を解除したことをどのように彼に伝えることができますか?

そのため、マニフェストで定義されたレシーバーを使用して、常にブロードキャストを受信して​​永続的に保存できるようにし (共有設定、データベースなど)、アクティビティが最新のブロードキャストが表示されたときに再構築できるようにします。

ただし、このルーチンが推奨されていないのか、それともなぜLocalBroadcastManager許可されていないのかはわかりません。

4

1 に答える 1