2

私は(驚くほど多くはありません)使用可能なすべての公式ドキュメントを読んで、私は定期的なタスクのために得ることができるすべては、このコードはFirebase JobDispatcherで定期的なタスクの期間を設定するにはどうすればいいですか?

  .setRecurring(true) 
      // start between 0 and 60 seconds from now 
      .setTrigger(Trigger.executionWindow(0, 60)) 

である私は.setRecurringジョブが定期的になり、triggerがそれを作ることをことを知っています60秒間隔で起動しますが、2回目の実行はどうでしょうか? 2回目も1回目から60秒間実行されることを意味しますか?

これは、バックグラウンドアクティビティの最適化と、サービスが想定していたよりも遅く実行される方法を考慮しても、ジョブが約5/10/20/20分後であまりにも多くの違いがあります。公式の文書では、その差は秒であり、おそらく数分で20分を超えないと言われています。

基本的に私の質問はこれです.setTrigger(Trigger.executionWindow(0, 60))は実際には期間が60秒であることを意味しますか、間違っていますか?あなたがトリガークラスhere

のソースを見れば

答えて

0

それがより明確になり、それは述べて:

/** 
 
    * Creates a new ExecutionWindow based on the provided time interval. 
 
    * 
 
    * @param windowStart The earliest time (in seconds) the job should be 
 
    *     considered eligible to run. Calculated from when the 
 
    *     job was scheduled (for new jobs) or last run (for 
 
    *     recurring jobs). 
 
    * @param windowEnd The latest time (in seconds) the job should be run in 
 
    *     an ideal world. Calculated in the same way as 
 
    *     {@code windowStart}. 
 
    * @throws IllegalArgumentException if the provided parameters are too 
 
    *         restrictive. 
 
    */ 
 
    public static JobTrigger.ExecutionWindowTrigger executionWindow(int windowStart, int windowEnd) { 
 
     if (windowStart < 0) { 
 
      throw new IllegalArgumentException("Window start can't be less than 0"); 
 
     } else if (windowEnd < windowStart) { 
 
      throw new IllegalArgumentException("Window end can't be less than window start"); 
 
     } 
 

 
     return new JobTrigger.ExecutionWindowTrigger(windowStart, windowEnd); 
 
    }

か、単にCtrlキー+をTriggerその後、Androidのメーカーをクリックしますあなたを元に戻します。あなたが書く場合:.setTrigger(Trigger.executionWindow(0, 60))それは毎秒実行されます

1

それは定期的ではありません。

.setRecurring(false) 
.setTrigger(Trigger.executionWindow(x, y)) 

このコードは、仕事からの時間の間に私たちの仕事X秒を実行するスケジュールされたジョブからY秒が予定されていました。

Xジョブを実行する資格を考慮しなければならない(秒)早い時間であるwindowStart、として知られています。ジョブが

YwindowEnd、ジョブは理想的な世界で実行する必要があります(秒単位)最新の時間として知られている(新規雇用のために)予定されていたときから計算します。 と同じ方法で計算されます。windowStart。それはこのコードは、ジョブからX秒は予定された時間と仕事から秒だったyの間で私たちの仕事を実行します

.setRecurring(true)    
.setTrigger(Trigger.executionWindow(x, y)) 

周期的である場合には

はscheduled.Sinceこれは、次の周期的ですジョブが終了してからx秒後に実行がスケジュールされます。

this回答もあります。

関連する問題