1

내 앱에 대한 전경 서비스가 있습니다. 내 앱이 전체 시간 동안 실행되고 중지되지 않아야합니다. 내가 몇 번 테스트하는 동안 3-4 일 후에 안드로이드는 그것을 멈추기로 결정하고 다시는 다시 시작하지 않으며, 내 액티비티에서는 서비스가 실행 중인지 확인하고 시작하는 경우 서비스를 확인합니다 그것. 비록 서비스가 시작되지 않고, 디버깅을 할 수 없습니다. 이것이 내 수표입니다. 뭔가 잘못 됐나요?Android에서 중지되는 포 그라운드 서비스가 나중에 다시 시작되지 않습니다.

if (!isMyServiceRunning(MyService.class)) { 
     startService(new Intent(this, MyService.class)); 
} 

private boolean isMyServiceRunning(Class<?> serviceClass) { 
    ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); 
    for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) { 
     if (serviceClass.getName().equals(service.service.getClassName())) { 
      return true; 
     } 
    } 
    return false; 
} 

나는 활동의 onResume에서이 검사를()를 호출하고, 활동이 시작되면 내가 얻을 것이다, 서비스에 지속적으로 실행 스레드를 가지고 있기 때문에 난 그냥, 매번 그것을 실행할 수 없습니다 하나 이상의 , 중 하나가 또는 을 실행하면 바로 활동을 시작할 때마다이 문제를 방지 할 수있는 서비스를 시작하면 서비스를 확인하기 위해 더 신뢰할 수있는 방법이 있습니다 인스턴스한다면 ... 여기

을 여러 번 시작 내가 원하는 것입니다 그리고 그것의 내부 스레드는 항상 단지 1 인스턴스 (나는 이미 정적이라고 선언했다)를 가져야한다.

답변

1

Activity이 시작/재개 될 때 서비스 Bindable을 작성하고 Activity을 서비스에 바인드 할 수 있습니다. 이렇게하면 서비스가 실행 중인지 확인할 수 있습니다. 하지만 당신의 서비스에 문제가 있다고 생각합니다. 서비스에 대한 추가 정보를 게시하도록 요청합니다. OS가 흔적이없는 전경 서비스를 죽이는 것은 정상적인 방법이 아닙니다.

+0

알아야 할 사항? –

+0

서비스를 시작하는 코드를 붙여 넣을 수 있습니까? –

+0

당신은 onStartCommand 메서드를 의미합니까? –

관련 문제