1

クラスを定義しますBatteryInfo extends BroadcastReceiver。コンストラクターを1回呼び出しますActivity onCreate()。に登録しActivity.registerReceiverますonCreate()

nullメモリリークやシステム内のインテント送信者を詰まらせることなくアクティビティを停止できるようにするために、登録を解除したり、参照を設定したりする必要があるかどうか、またはシステムがこれに関連するすべてのものを優雅に投げるかどうかを判断しようとしていますそれ自身。そのために、私は次のように読んだ BroadcastReceiverライフサイクルについて考えています。

BroadcastReceiverオブジェクトは、onReceive(Context、Intent)の呼び出し中のみ有効です。コードがこの関数から戻ると、システムはオブジェクトが終了し、アクティブでなくなったと見なします。」

これは何を意味するのでしょうか?明らかに、私が作成しnew BatteryInfo()て登録したオブジェクトはregisterReceiver()、アクティビティが持続する間ずっと持続します。私はそれからの結果を記録し、その間ずっとそれらを見ます。明らかに、最初onReceive()に呼び出されてから無効になったわけではありません。

ドキュメントのこのセクションは、おそらく?BroadcastReceiversに登録されているものにのみ適用されるのではないかと思います。そして、動的に作成および登録されるの AndroidManifestは、単に正しくないか、または無関係であるということですか?BroadcastReceivers

そしてもちろん、ダイナミックレシーバーの適切なクリーンアップとderferencingは何であるか疑問に思っています。

4

1 に答える 1

1

コードで行う必要があるのは、BroadcastReceiversそれらを登録および登録解除することだけです。そのステートメントは、たとえば別のスレッドなど、の外部では作業を実行できないことを通知しonReceive、値をに戻しますBroadcastReceiver。これを行うには、BroadcastReceiverを開始する必要がありますService

于 2012-05-14T18:25:46.593 に答える