2017-08-28 22 views
1

マイアプリのスケジュールあまりにもまれに呼び出されます:私は、Android OSは、ジョブスケジューラを最適化することを、事実を知っています、そのためのそれは意志ジョブスケジューラ間隔は60秒の定期的な間隔でjobschedulerの

val service = ComponentName(packageName, MonitorService::class.java.name) 
val job = JobInfo.Builder(JOB_ID, service) 
      .setPeriodic(interval) // interval is 60*1000 
      .setPersisted(true) 
      .setRequiresCharging(false) 
      .build() 
jobScheduler.schedule(job) 

決して正確にスケジュールされることはありませんが、2〜3分後に同様にスケジュールされます。自分のデバイス(HTC One M8 with Android 6.0)でこの動作を確認します。

多くの(さまざまな)他のデバイスでは、間隔がであり、多くの場合、はあまりありません(1回につき1回/ 2回のみ)。

どうすれば修正できますか?ジョブスケジューラは私のユースケースの正しいAPIではないのでしょうか?

答えて

4

Androidの新しいバージョンでは、JobSchedulerの最小期間は15分です。 See getMinPeriodMillis()

あなたの「ユースケース」に関して、毎分何かを行うことは、バッテリ寿命にとって恐ろしいことです。ユーザーはを非常に大声でと訴えているので、Googleはこれをやらないように対策を続けています。たとえば、Android 6.0以降でDozeモードとアプリスタンバイを使用すると、ジョブが非常に頻繁に実行されることがあります(1時間に1回程度)。

関連する問題