본문 바로가기
프로그래밍 놀이터/안드로이드, Java

[android] WakefulBroadcastReceiver 를 알아보자!

by 돼지왕 왕돼지 2018. 12. 1.
반응형

[android] WakefulBroadcastReceiver 를 알아보자!


https://developer.android.com/reference/android/support/v4/content/WakefulBroadcastReceiver

broadcastReceiver, completeWakefulIntent, deprecated, jobscheduler, oreo, partial wake lock, startWakefulService, WakefulBroadcastReceiver, WAKE_LOCK, WAKE_LOCK permission, [android] WakefulBroadcastReceiver 를 알아보자!


-

우선 시작하기에 앞서 이 녀석은 26.1.0 에서 deprecated 되었으며 그 이유는..

Android O 에서 background restriction 이 생겼기 때문이다.

그래서 이 녀석 대신 JobScheduler 를 사용하는 것이 권장된다.



-

이 녀석은 원래 BroadcastReceiver 의 한 형태로, device wakeup event 를 받아서 그 작업 처리를 Service 에 넘기는 역할을 했던 녀석이다. 또한 그 과정중에 device 가 sleep 되지 않음을 보장해주는 녀석이다.


이 녀석은 partial wake lock 을 사용해서 이를 보장해주었다.

그래서 WAKE_LOCK permission 이 필요하다.


이 녀석이 사용하는 wake lock 은 "androidx.core:wake:<component-name>" 이름을 가지고 있다.



-

이 녀석에서 service 를 실행시킬때는 startWakefulService() api 를 사용한다.

startService 와 동일하지만 wake lock 을 잡는다는 차이가 있다.



-

단.. 이 녀석 좀 어글리한 모습을 가지고 있는데...

Service 를 마치고 wake lock 을 해지하는 작업을 해주어야 한다...

이 때 호출한 WakefulBroadcastReceiver 의 static function 인 completeWakefulIntent(intent) 를 호출해주어야 한다…



-

결론적으로는 이 녀석은 deprecated 되었고 JobScheduler 를 사용하라고 가이드 하고 있기 때문에, 새롭게 쓸 일은 없을 것이고.. 저런 녀석이 있었구나.. 정도만 알면 될 것 같다.




반응형

댓글