サービスを使用してバッテリーの変更をリッスンするバッテリーウィジェットを作成しました。
常にサービスを維持することは、一般的には良い考えではないことに注意してください。ユーザーはそれを気に入らず、タスクキラーまたは[設定]の[サービスの管理]画面で強制終了します。Androidもそれを気に入らず、最終的には停止します。
電池残量はあまり変化しないので、使用する機種に切り替えてAlarmManager
数分おきに電池残量を確認してください。
ただし、このため、ウィジェットを作成するときは、データを表示する前に、バッテリーの状態が変化するまで待機する必要があります。
いいえ。に登録すると、スティッキーブロードキャストであるため、そのアクションの最後に送信されたブロードキャストですぐに呼び出されACTION_BATTERY_CHANGED
ます。BroadcastReceiver
ACTION_BATTERY_CHANGED
このサンプルプロジェクトでそれを見ることができます。バッテリー情報はアクティビティにすぐに表示されます。これは、onReceive()
メソッドがすぐに呼び出されるためにのみ可能です。
私の質問は、バッテリーを1回限りの発生として問い合わせる簡単な方法があるかどうかです。
それも可能です。を呼び出しますregisterReceiver()
がACTION_BATTERY_CHANGED
、 。を使用しnull
BroadcastReceiver
ます。そのアクションの最後に送信されたブロードキャストが返されIntent
ます。これはAlarmManager
、たとえば、イベントからそれを処理する方法になります。