0

ユーザーから最高温度を取得するアプリを開発しています。バッテリーの現在の温度を監視し続けます。温度がユーザーから取得した最大温度を超えると、ユーザーに通知する必要があります。

私はレイアウトを設計し、ユーザーからの温度を保存するロジックを書きました。EXTRA_TEMPERATURE を使用して温度を監視できることを知っています。ただし、このアプリはバックグラウンドで実行する必要があります。常に温度を監視する必要があるため、論理的にはサービスは常に実行されている必要があります。

フォーラムを読んでいると、これによりバッテリーが大幅に消耗し、ほとんどの場合、画面がオンのときにサービスを実行できることがわかります。しかし、バッテリーを消耗することなくバックグラウンドでサービスを利用できるかどうかを知りたい. または、これを達成する他の方法はありますか?

私のアプリはこれに似ています:アクティベーション後にバックグラウンドで実行される温度感知Androidアプリの作成

4

1 に答える 1

1

常に温度を監視する必要があるため、論理的にはサービスは常に実行されている必要があります。

イク。

または、これを達成する他の方法はありますか?

ステップ #1: ユーザーがポーリング期間 (1 分、5 分、10 分など) を選択できるようにします。

AlarmManagerステップ #2:そのポーリング期間に基づいて時間に制御を取得するスケジュールを設定し、制御を にルーティングしBroadcastReceiverます。

ステップ #3:onReceive()BroadcastReceiver、最後にブロードキャストされたバッテリー情報を 経由registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED))で取得し、 を選択してEXTRA_TEMPERATURE、現在のアルゴリズムに従って処理します。ここで実行される作業が数ミリ秒を超える場合は、その作業をIntentServiceバックグラウンド スレッドで作業できる に委譲することを検討してください。

この方法では、常にプロセスをメモリに保持する必要はなく、ユーザーは温度を監視する方法を選択できます。監視が積極的であるほど、バッテリーのコストが高くなります (皮肉なことに、より多くの監視によりバッテリー温度が上昇します)。

于 2013-04-20T22:24:21.690 に答える