2016-06-16 6 views
0

작업 스케줄러 서비스를 사용하여 작업을 예약하고 있습니다. 내 직업을 시작할 조건은 network(setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY))입니다. 처음으로 사용자 입력 (예 : 버튼 클릭)에서 작업을 예약하므로 사용자가 버튼을 클릭하면 네트워크를 사용할 수있게되면 내 작업이 시작됩니다.
Android Job Scheduler : 데이터 네트워크가있을 때마다 작업 수행

제 질문은 제 작업이 후속 사용자 입력없이 시작되어야한다는 것입니다. 이것이 가능한가? 그렇다면 제안하십시오.

답변

0

예이 가능

JobInfo.Builder와 https://developer.android.com/reference/android/app/job/JobInfo.Builder.html#setMinimumLatency(long)

에서 모양과 수 있습니다 (그 이후 안드로이드 N에서 몇 가지 한계를 가지고 있기 때문에 나는. 네트워크 변경 청취자를 수신하지 않음) 예를 빌더에서 설정할 수있는 https://developer.android.com/reference/android/app/job/JobInfo.Builder.html#setRequiredNetworkType(int)

+0

내 이해에 따르면, setPeriodic은 네트워크가 사용 가능 해지는 즉시 특정 시간 이후에 작업을 수행합니다. 네트워크를 사용할 수있게되는 즉시 작업을 수행해야합니다. – user2724311

+0

setMinimumLatency (long minLatencyMillis)와 결합하면 어떨까요? 그것이 작업을 실행하기 전에 통과해야하는 최소 시간입니다. 네트워크가없는 한 오래 실행되지 않을 것입니다. 네트워크가 돌아 오면 최소 시간이 지나면 실행됩니다. 그런 다음 일을 마쳤다 완료했습니다. – QVDev

0

와 함께 사용

setBackoffCriteria

제약 조건이 충족되지 않아 예약 된 작업이 중단 될 때마다 계속 시도합니다.

builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY); 
    builder.setPeriodic(TimeUnit.DAYS.toMillis(1)); 
    builder.setBackoffCriteria(1000, JobInfo.BACKOFF_POLICY_EXPONENTIAL);