2017-10-14 114 views
0

這是我建立我的工作:的jobscheduler工作被取消

val builder = JobInfo.Builder(1, ComponentName(this, 
PullDataJob::class.java)) 
      .setPeriodic(1000L * 60 * 60) // one hour 
      .setRequiredNetworkType(NETWORK_TYPE_ANY) 
      .setPersisted(true) 
jobScheduler.schedule(builder.build()) 

我的測試程序:

  1. 打開我的應用程序
  2. 使用adb shell dumpsys jobscheduler獲得活動作業名單。我的工作可以在列表中看到。
  3. 通過從最近的列表中滑動我的應用程序來殺死進程。
  4. 使用相同的命令,並發現我的工作已經結束。
  5. jobScheduler.allPendingJobs.size變爲0.
  6. 重新打開我的應用程序。
  7. 我的工作仍然不存在於活動工作清單中,除非我再次手動安排(即使我使用setPersisted(true))。

我的測試環境:

氫OS,安卓7.1.1,targetSdkVersion:26

那是預期的行爲?如果我希望作業能夠定期運行,即使應用程序被殺,我該怎麼辦?

+0

是的,這是理想的行爲。動作編號3)爲用戶提供永久停止使用CPU的應用程序的權力。 – Henry

+0

嘗試此鏈接可能會幫助你https://stackoverflow.com/questions/38410309/jobscheduler-setrequirednetworktypejobinfo-network-type-any-not-working –

+0

@AmjadKhan這兩個問題是如何相互關聯的... – Null

回答

0

我發現了這個問題。有一個優化選項可以在應用程序關閉時取消我的所有工作。

它在「設置」 - 「電池」 - 「電池優化」 - 「高級優化」中。 (我的系統語言不是英文,因此它是近似翻譯)