4

環境: Eclipse
言語: Java (Android)

デバイスでアプリケーションをテストするまでは、ちょっとした問題に気付きませんでした。電話がスリープ状態であっても、サービスはバックグラウンドで継続的に実行されていると常に思っていました。そうではないことがわかったので、デバイスをウェイクアップすると、サービスは再び開始されますか? そうでない場合、どうすればサービスを再起動できますか。

30 秒から 1 分間続くサービスを実行するためだけに、電話を 5 分ごとにスリープ解除することはできますか。そして、電話を再びスリープ状態にしますか?

前もって感謝します。

EDIT:私はAndroidプログラミングに非常に慣れていないので、誰かがWakefulIntentServiceの使い方を教えてくれたら本当にありがたいです. ユーザーの GPS 位置情報を頻繁に検索するサービスがありますが、電話がスリープ状態になっても、サービスでユーザーの位置情報を検索したいと考えています。これに WakefulIntentService を使用するにはどうすればよいですか? そして、このシナリオでそれを使用できるでしょうか。

ありがとう。

4

4 に答える 4

11

lockサービスを実行し続けるにはプロセッサを保持する必要があります

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "TAG");
wl.acquire();
// When you are done
wl.release();

また、サービスが を使用している場合はWi-Fi、別のロックも必要です

WifiManager wm = (WifiManager) getSystemService(Context.WIFI_SERVICE);
wifiLock= wm.createWifiLock(WifiManager.WIFI_MODE_FULL, "TAG");
wifiLock.acquire();

// When you are done
wifiLock.release();

android.permission.WAKE_LOCKマニフェストに追加することを忘れないでください

于 2013-02-15T23:46:55.180 に答える
3

ユーザーの GPS 位置情報を頻繁に検索するサービスがありますが、電話がスリープ状態になったときでも、サービスでユーザーの位置情報を検索したいと考えています。これに WakefulIntentService を使用するにはどうすればよいですか? そして、このシナリオでそれを使用できるでしょうか。

WakefulIntentServiceこれは、何らかの作業を行うためにデバイスを短時間アクティブにしておくためだけに設計されているため、ここでは不適切です。GPS 修正を取得するのにかかる時間など、不確定な時間デバイスを起動しておくようには設計されていません。

あなたのシナリオをもう少しうまく処理するLocationPollerプロジェクトがあります。

私はAndroidプログラミングに非常に慣れていません

あなたがやろうとしていることは、あなたの Android 経験レベルを持つ人にとっては適切なプロジェクトではありません。

于 2013-02-25T01:02:07.303 に答える
0

サービスが正確に何をしているのかわかりませんが、サーバーにデータをダウンロード/アップロードしている場合は、Sync Adapterの使用を検討してください。

正確なタイミングが必要でない限り、AlarmManager よりもシステムへの負担が少なくなります。

他のことをしている場合は、 JobScheduler APIを調べてください。

とにかく、本当に AlarmManager に固執したい場合は、不正確な繰り返しが正確な繰り返しよりもはるかに優れていることを知っておいてください。

于 2015-09-18T08:57:01.183 に答える
-6

私は使用AlarmManagerしました、私は見ました、WakefulIntentServiceそしてそれは私に何をすべきかについての考えを与えました。皆様のご協力に改めて感謝いたします。

于 2013-02-25T18:53:51.030 に答える