2

我讀過所有可用的官方文檔(這是令人驚訝的不是很多),所有我能得到定期​​的任務是驗證碼如何在Firebase JobDispatcher中設置週期性任務的週期?

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

我知道.setRecurring,使工作週期,而且trigger使它以60秒爲間隔開始,但第二次執行的時間呢?這是否意味着第二次也會從第一次開始執行60秒?

這不可能是真實的,因爲即使考慮到後臺活動的優化以及服務如何比預期晚一點運行,在工作約5/10/20分鐘時編程60秒時間後來是太不同了。官方文件表示,差異是幾秒鐘,也許幾分鐘不超過20分鐘。

基本上,我的問題是這個.setTrigger(Trigger.executionWindow(0, 60))真的意味着這段時間是60秒還是我開始這個錯誤?

回答

0

如果你看一下觸發類的源會更清楚here

它指出:

/** 
 
    * 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 Studio會把你帶到源頭。所以如果你寫:.setTrigger(Trigger.executionWindow(0, 60))那麼它將每秒運行

1

當它是非週期性的。

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

該代碼將運行的時間從工作X秒被安排和y的工作秒原定之間我們的工作。

X是知道的windowStart,這是最早的時候(以秒爲單位)的工作應該被視爲符合運行條件。從當定(新工作)

Ÿ是知道的windowEnd,最新的時間(單位:秒)的工作應該在一個理想的世界運行的作業計算。以與windowStart相同的方式計算。

當是週期性

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

該代碼將運行的時間從工作X秒被安排和y的工作秒是我們之間的工作scheduled.Since這是週期性的下執行將在作業完成後安排x秒。

可能也指this也回答。