안드로이드에서의 포그라운드 작업 중에 안 사실
현재 앱을 하나 만들고 있는데 이 앱을 처음에는 Notification 하나 없이 완벽하게 백그라운드로만 돌아가는 서비스로 만들고 싶었다. 하지만 이렇게 만들고 에뮬레이터에서 실험해봤더니 히스토리를 비워버리면 백그라운드 작업이 정상 동작을 하지 않는 일을 겪었다.
에뮬레이터가 아닌 실제 기기에서 테스트 할 때는 no pid ignore service라는 로그가 뜨는데 이에 대한 내용은 구글에서 잘 나오지 않아 명확하게 말할 수는 없지만 해당 프로세스가 없어졌기 때문에 서비스 거부를 당한 것 같다고 로그로 지레짐작했다.
히스토리를 없애도 작동하는 방법은 포그라운드 뿐인 것 같아 더미 포그라운드를 하나 만들고 다시 테스트를 실행시켜봤더니 모든 백그라운드 서비스가 정상적으로 동작했다. 포그라운드가 하나 붙어있으면 앱이 가진 백그라운드 프로세스가 죽지 않는 것 같다.
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// run when other component call startService()
Notification notiEx = new NotificationCompat.Builder(TimeService.this)
.setContentTitle("TESTING TITLE")
.setContentText("TESTING CONTENT")
.setSmallIcon(R.drawable.ic_done_white_18dp)
.build();
startForeground(1, notiEx);
return super.onStartCommand(intent, flags, startId);
}
[특별할 것 없는 포그라운드의 더미 코드 부분이다]