0

私の Android アプリでは、電話がアクティブかどうかに関係なく、毎分実行する特定のコードが必要です。

(好奇心旺盛な人のために説明すると、このアプリは個人的なプロジェクト、つまり、再生する対応するサウンド ファイルがあるかどうかを毎分チェックする必要がある「話す」時計を対象としています。これは私が世界にリリースする予定のものではないため、バッテリー考慮事項は考慮されていません。)

私の現在のアプローチはTimer.scheduleAtFixedRate()、タスクをスケジュールするために使用することです。

これは、アプリを見ているときはいつでも機能しているようで、画面が空白にならないように時々操作していますが、電話が電力を節約するために画面をオフにすると、通話が散発的に発生するようです.

間隔を 30 秒ごとに設定してみましたが、それでも数分遅れているようです。Android でタイマーを使用する際に考慮すべき点はありますか? 必要なものを達成するためのより良い方法はありますか?

4

2 に答える 2

2

質問: 毎分これを行う必要があると 100% 確信していますか? 狂ったようにバッテリーを浪費し、多くの不幸なユーザーを獲得するように思えます。

しかし、yesその質問に答えると、アクティビティが一時停止された後、そのアクティビティ (タスクを含む) が実行され続けるというシステムの保証はありません。そうすれば、システムが何かを行うために数メガバイトが必要になるとすぐに、アクティビティが強制終了され、タイマーが停止します。

サービスにタイマー/タスクを実装する必要があります。サービスがシステムによって強制終了される可能性ははるかに低く、できるだけ早くサービスを再作成するためにシステムがサービスを強制終了する必要があるかどうかを尋ねる場合があります。

于 2012-08-15T14:54:32.760 に答える
1

を使用してみましAlarmManagerたか。これにより、電話機がスタンバイ モードまたはオフの場合でも、X 時間ごとにタスクを実行できます。

ここにドキュメントがあります

AlarmManager を使用する良い例が必要な場合は、ここにあります...これは、電話がオフになっている場合は機能しませんが、必要に応じて簡単に有効にすることができます

于 2012-08-15T14:53:21.210 に答える