사용에 제한이있다.
어디선가 명시적인 리스닝과 OS버전에 따른 문제가있다.
명시적인 리스닝을 위해 Background 에서 실행할 Android Component는 필수적이다 (Br, Serivce, ??..)
다싫다..난 백그라운드만 돌면되는데.
WorkManager이다.
크게 OneTimeWorker/PeriodicWorker 가 있다
OneTimeWorker - 1회 실행후 반복이없다.
PeriodicWorkRequest - 반복성을 갖고 '몇번, 몇초간격' 마다 실행되도록이다.
요구사항은
메인화면을 접근을 확인후, 15일동안 앱을 킨적이 없다면, 오랜만에 앱좀 켜야지?하고 알려주는 LocalPush 를 만들고싶다. (요약 : 메인화면을 키면, 로컬푸시 노출시간을 다시 15일 이후로 변경한다)
기존 제약사항이라면, 재부팅하고나서 AlarmManager는 날아간 alarm을 복구해주고, 이전기록을 보고, API 부터 다시호출하고, 이전기독을 확인하는 작업을 해야한다.
WorkManager 를 통한다면 위와 같은 제약사항을 쉽게 처리할수있다.
enqueue 를하면, 누적되어서 계속 쌓인다.
나중에 WorkManager에 등록된 Worker를 보기위해선, ID, Tag로 찾아야하는데 기본값이 있기때문에 별도 설정을 해주지않으면 아래와 같이 여러개를 찾게된다.
ID : 0ef77074-a975-4167-b489-6be51a67877a + TAG : [com.local.LongtimePushWorker, enQ], ENQUEUED
ID : 2127be8f-246d-4513-8abc-f838ad9e2d71 + TAG : [com.local.LongtimePushWorker, enQ], SUCCEEDED
ID : 323ced5c-2d9a-44b7-a79a-6c015ae10d07 + TAG : [com.local.LongtimePushWorker, enQ], ENQUEUED
ID : 482c675e-1361-4e8f-8dff-649154019844 + TAG : [com.local.LongtimePushWorker, enQ], ENQUEUED
ID : 7f6e2c33-0e8d-464c-a192-f20ee8399dac + TAG : [com.local.LongtimePushWorker, enQ], ENQUEUED
ID : d03934cf-b0d3-4871-a73e-42ab9254335b + TAG : [com.local.LongtimePushWorker, enQ], SUCCEEDED
enqueue를 사용하면 기존에있는 워커를 지우고, 다시 등록해야함.
enqueueUniqueWork 를해주면, 유일하게 하나로유지
d03934cf-b0d3-4871-a73e-42ab9254335b + TAG : [com.local.LongtimePushWorker, enQ], SUCCEEDED
API낭비를 막기위해 하루 한번 실행하는데, API실패에 대한 처리를 별도로 하는게 좋을지?
AlarmManager > Br.. IntenteService JobScheduler
사용에 제한이있다. 어디선가 명시적인 리스닝과 OS버전에 따른 문제가있다. 명시적인 리스닝을 위해 Background 에서 실행할 Android Component는 필수적이다 (Br, Serivce, ??..) 다싫다..난 백그라운드만 돌면되는데.
WorkManager이다. 크게 OneTimeWorker/PeriodicWorker 가 있다 OneTimeWorker - 1회 실행후 반복이없다. PeriodicWorkRequest - 반복성을 갖고 '몇번, 몇초간격' 마다 실행되도록이다.
요구사항은 메인화면을 접근을 확인후, 15일동안 앱을 킨적이 없다면, 오랜만에 앱좀 켜야지?하고 알려주는 LocalPush 를 만들고싶다. (요약 : 메인화면을 키면, 로컬푸시 노출시간을 다시 15일 이후로 변경한다) 기존 제약사항이라면, 재부팅하고나서 AlarmManager는 날아간 alarm을 복구해주고, 이전기록을 보고, API 부터 다시호출하고, 이전기독을 확인하는 작업을 해야한다.
WorkManager 를 통한다면 위와 같은 제약사항을 쉽게 처리할수있다. enqueue 를하면, 누적되어서 계속 쌓인다. 나중에 WorkManager에 등록된 Worker를 보기위해선, ID, Tag로 찾아야하는데 기본값이 있기때문에 별도 설정을 해주지않으면 아래와 같이 여러개를 찾게된다.
enqueue를 사용하면 기존에있는 워커를 지우고, 다시 등록해야함. enqueueUniqueWork 를해주면, 유일하게 하나로유지
d03934cf-b0d3-4871-a73e-42ab9254335b + TAG : [com.local.LongtimePushWorker, enQ], SUCCEEDED
API낭비를 막기위해 하루 한번 실행하는데, API실패에 대한 처리를 별도로 하는게 좋을지?
재부팅 가능 유휴한상태 가능 프로세스없이도 가능