출처 : https://forest71.tistory.com/185
Android 의 서비스는 총 세종류가 있다.
1. 포그라운드
2. 백그라운드
3. 바인드
이 셋중 죽지 않는 서비스는 포그라운드를 사용하면된다.
하지만, 아래와 같이 Notification 알림창이 지속적으로 보여지고있다.
[죽지 않는 서비스를 백그라운드 서비스로 할 수 없는이유]
백그라운드 서비스는 시스템이 리소스가 부족한 경우 os에서 임의로 중단이 가능하다.
이 문제를 제대로된 대안책은 아니지만 출처 링크는 나름의 대안책을 내서 해당 글을 이야기해보려한다.
요소들은 이렇게 있다.
- AlarmRecever(BroadcastReceiver)
- MainActivity(Activity)
- RealService(Service)
- RebootReceiver(BroadcastReceiver)
- RestartService(Service)
전체적인 흐름
1. 휴대폰 켜짐
boot_completed(BroadcastReceiver)휴대폰이 켜졌는지를 확인
2. 버전 확인
SDK_INT >= Oreo 이라면 startForegroundService 를 통해 RestartService 실행
SDK_INT < Oreo 라면 startService 를 통해 RealService 실행
(startForegroundService 로 RestartService 가 실행되었을경우 해당 서비스가 startService를 통해 RealService 실행)
3. RealService 가 돌아가는중에 리소스 부족으로 종료되었을 경우
AlarmRecever(BroadcastReceiver) 를 통해서 RealSerivce 가 죽었을때 Alarm 으로 다시 버전확인 하는부분으로돌아가 RealService 실행해준다.
[단점]
ForegroundSerivce의 Notification이 지속적으로 표출되어있지는 않지만 RealService가 죽었을경우 다시 켜주는 과정에서 다시 깜빡거리게 된다.
아래의 스틱코드 링크의 포스트를 즐겨 찾기를 하게 될경우
https://stickode.com/detail.html?no=2554
intellj 나 vscode 같은 에디터에 스틱코드 플러그인을 설치하고 로그인 했을경우 간단한 명령어로 코드가 붙여넣기가 가능하다.
https://stickode.com/mainlogin.html
스틱코드를 통해 여러가지 예제를 다운받지 않고 바로 적용해보거나 자신이 자주쓰는 코드들을 올려서
위와 같이 메소드를 쳐서 빠르게 적용이 가능하니 많이 이용하면 작업의 생산이 올라갈 것입니다.
감사합니다
'안드로이드 자바' 카테고리의 다른 글
[JAVA][Android] Splash 화면 만들기 (0) | 2021.11.10 |
---|---|
[Java][Android] retrofit + 리사이클러뷰 만들기 (0) | 2021.11.09 |
[JAVA][Android] 리사이클러뷰안에 리사이클러뷰 만들기 (0) | 2021.10.30 |
[JAVA][Android] 시크바와 프로그레스바 연동하기 (0) | 2021.10.29 |
[JAVA][Android] 주사위 예제 만들기 (0) | 2021.10.27 |