1. Android Immortal Service (죽지않는 서비스) 구현하기
페이지 정보
작성자 관리자 댓글 1건 조회 7,321회 작성일 19-09-17 19:46본문
1. Android Immortal Service (죽지않는 서비스) 구현하기
Android의 죽지 않는 서비스는 일반적인 서비스를 startForeground로 실행하면 간단하게 구현 할 수 있다.
이 방법의 문제는 Notification을 이용하여 알림창에 표시해야만 한다는 것이다
이 내용들을 토대로 운영체제가 서비스를 죽이면 다시 실행하는 방법으로 죽지 않는 서비스를 구현하였다.
다시 실행시키는 방법은 알람(Alarm)을 이용한다.
서비스가 종료되면(onDestroy) 1초 뒤에 알람이 실행되게 하고,
알람에서 해당 서비스를 다시 실행한다.
Oreo 이후 버전은 Android에서 제공하는 죽지않는(Foreground) 서비스인 RestartService를 startForegroundService로 실행한다.
startForegroundService로 실행한 RestartService의 코드는 다음과 같다.
RestartService 의 코드는 Android에서 제공하는 죽지않는(Foreground) 서비스의 코드이다.
포그라운드(Foreground)로 실행되지만, Android 알림창에 표시되는 문제가 있다.
따라서, RestartService를 startForeground로 실행하고,
RealService를 실행한다 (startService).
그리고 실행된 RestartService를 stopForeground와 stopSelf를 실행하여 RestartService를 종료한다.
RestartService가 실행되고 종료되는 시간이 짧기 때문에 알림창에는 표시가 생기지 않는다.
이외에 부팅후 실행을 위한 코드(RebootRecever)도 있지만 알람과 동일한 코드라 생략한다.
이상의 죽지 않는 서비스를 구현하기 위해 필요한 2개의 서비스와 2개의 Recever를
AndroidManifest.xml 파일에 다음과 같이 등록해야 한다.
