아메리카노가 그렇게 맛있답니다 여러분

현재 앱을 하나 만들고 있는데 이 앱을 처음에는 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);
    }

 

[특별할 것 없는 포그라운드의 더미 코드 부분이다]