반응형
- 반복작업에 좋음(작업의 텀이 긴경우)
- 설정한 시간에 따라 정확히 동작하진 않는다.
manifest
<service android:name=".job.CouponJobService"
android:permission="android.permission.BIND_JOB_SERVICE"
android:exported="true"/>
- android.permission.BIND_JOB_SERVICE 는 필수 퍼미션이다.
run jobService
val COUPON_JOB_SERVICE_ID = 1253
fun makeAJob(context: Context ,jobID:Int , timeInterval:Long = TimeUnit.HOURS.toMillis(2)) {
val job = context.getSystemService(Context.JOB_SCHEDULER_SERVICE) as JobScheduler?
job?.cancelAll()//설정한 이전작업들을 취소함.
val componentName = ComponentName(context, CouponJobService::class.java)
job!!.schedule(
JobInfo.Builder(jobID, componentName)
.setRequiresDeviceIdle(false)// idle 상태일때만 작동
.setRequiresCharging(false)//충전중일때만 작동
.setPeriodic(timeInterval) //15분이상으로 설정해야된다.
.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY)//네트워크 타입을 설정해 작동시킬수 있다.
.build()
)
}
make Job
class MyJobService :JobService(){
override fun onStopJob(params: JobParameters?): Boolean {
//처음 설정했던 job설정에 맞다고 판단하면 true리턴해 작업을 재시작하면된다.
//아니라면 false
return true
}
override fun onStartJob(params: JobParameters?): Boolean {
.....
// long term work (network....)
....
//긴작업 이후엔 잡이 끝낫음을 알린다.
jobFinished(params,false)
//true인 경우 해당작업을 반복한다.
return true
}
}
반응형
'AOS' 카테고리의 다른 글
(Android) 트위치 app 2 - ANR WatchDog (0) | 2021.04.16 |
---|---|
(안드로이드)채팅 구현하기 (0) | 2021.01.14 |
(안드로이드) 인앱결제(billingClient v3) (0) | 2020.10.08 |
(android)pinch zoom imageview (0) | 2020.09.03 |
(안드로이드)명시적,암시적 인텐트 (0) | 2020.05.03 |