본문 바로가기
프로그램 개발해서 돈벌기/Android

안드로이드에서 startService, startForegroundService 사용과 중복 실행 방지를 예제로 설명

by ubmuhan 2023. 12. 8.
반응형

안드로이드에서 startServicestartForegroundService 메서드는 서비스를 시작하는 데 사용되는 메서드입니다. 이 두 메서드의 차이점은 Android 8.0 (Oreo)부터 도입된 백그라운드 실행 제한에 있습니다.

  • startService: 서비스를 시작하며, 서비스가 시작된 후에 해당 서비스가 백그라운드에서 실행되는 한 시스템이 종료시키지 않습니다. 그러나 이 메서드를 사용하면 서비스가 포그라운드 서비스로 시작되지 않으므로, 서비스가 백그라운드에서 실행 중이더라도 일정 시간이 지나면 시스템에 의해 종료될 수 있습니다.

  • startForegroundService: Android 8.0 이상에서 도입된 메서드로, 포그라운드 서비스로 서비스를 시작합니다. 포그라운드 서비스는 사용자에게 노티피케이션을 통해 서비스가 실행 중임을 알리며, 시스템이 백그라운드 서비스를 쉽게 종료하지 않도록 합니다.

 

아래 코드는 서비스 실행 및 서비스 중복 실행 방지 코드입니다.

private boolean isServiceConnected = false;

private ServiceConnection serviceConnection = new ServiceConnection() {
    @Override
    public void onServiceConnected(ComponentName name, IBinder service) {
        isServiceConnected = true;
    }

    @Override
    public void onServiceDisconnected(ComponentName name) {
        isServiceConnected = false;
    }
};

// 서비스 시작 시 호출되는 메서드
public void startService() {
    if (!isServiceConnected) {
        Intent serviceIntent = new Intent(this, YourService.class);

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            startForegroundService(serviceIntent);
        } else {
            startService(serviceIntent);
        }

        // 서비스와 연결
        bindService(serviceIntent, serviceConnection, Context.BIND_AUTO_CREATE);
    }
}

 

반응형

댓글