0

AlarmManager を使用して定期的なサービス (15 分ごと) を実行する Android アプリに取り組んでいます。

このサービスは、インターネットを介してデータを送受信します。

3G が有効になっていて、電話機がアイドル状態になっていることに気付きました。インターネットとの通信に問題があります。必要なときに 3G が自動的にオンにならないかのようです。

このサービスは、ユーザーが電話 (および 3G) を同時に使用している場合はうまく機能しますが、電話がアイドル状態の場合は機能しません。

必要なときに 3G をトリガーする方法について何か提案はありますか?

4

1 に答える 1

0

電話が使用されていないときは、 WakeLockを取得して保持する必要があります。そうしないと、電話機がスリープ状態になり、リクエストが処理されません。

AlarmManager から呼び出される BroadcastReceiver にウェイクロックを作成することが重要です。次に、WakeLock を静的参照に設定し、サービスを呼び出します。その後、サービスは静的参照の設定を解除し、コードが完了するまで WakeLock を保持し続けます。

ちょっとしたヒントとして、電力を節約するためにAlarmManager.setInexactRepeatingを調べることをお勧めします。同様のアラームをグループ化して、電話機が起動する回数を減らします。また、15分のインターバルは非常に短いです。その時間間隔で電話を起動するだけで、大量のバッテリーを消費します。最低でも1時間は大丈夫です。

于 2012-02-23T05:43:14.903 に答える