2016-04-18 6 views
1

で、正確なタイマーが必要です。

4.xすべてokです。 6.0とさらに5.xでは(少なくともサムスンでは)タイマーが正しく動作しませんでした。
私たちがリクエストしている時間は違いはありません。たとえば、600ミリ秒(時々)、30秒と5分のタイマーが必要です。デバイスがアイドルモード(6.0、Doze)にある場合、これらのいずれかが予期しない時間、さらには数時間(!!!)まで遅延することがあります。

のThread.sleep()タイマクラス、pthread_cond_timedwaitは()(C)には、AlarmManager.set() - は、正確なタイムアウトを保証することはできません。
AlarmManager.setExact()は改善されていますが、必ずしもそうではありません。アイドル(Doze)モードではまったく動作しないことがあります。アプリがホワイトリストに登録されていても
AlarmManager.setExactAndAllowWhileIdle()は、setExact()と同じように見えます。これはアイドルモードで動作する唯一の違いですが、15分以上のタイムアウトでのみ動作します。

パワーホワイトリストにアプリケーションを追加しても役に立たなかった。

正確に(少なくともおおよその)リピートタイムアウトを提供する方法はありますか?Androidアプリケーションの正確なタイムアウトは

答えて

0

私の提案:要求された時間に達したときに常に実行されているサービスを実装し、のSystem.currentTimeMillis()で定期的に(例えば100msごとに)確認してください。
短所:Android SDKのタイマーよりもバッテリを消費します

+0

私のアプリはフォアグラウンドサービスです。 "100msごとに"タイムアウトを実装することは不可能であるという問題。タイムアウトが1時間ほど遅れることがあります。 – RomaRoma

関連する問題