2017-10-14 8 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

문제점을 파악했습니다. 내 응용 프로그램이 닫히면 모든 작업을 취소하는 최적화 옵션이 있습니다.

"설정"- "배터리"- "배터리 최적화"- "고급 최적화"내에 있습니다. (내 시스템 언어는 영어가 아니므로 대략적인 번역입니다)