2010-11-18 7 views
4

나는 사용하여 서비스를 시작합니다Android : BIND_AUTO_CREATE 옵션으로 bindService()가 시작한 서비스를 중지하는 방법?

private ServiceConnection _serviceConnection = new ServiceConnection() {...} 
bindService(new Intent(this, MainService.class), _serviceConnection, Context.BIND_AUTO_CREATE); 

내가 '다시 시작'서비스에합니다. 나는 다음 bindService를 (호출 할 때까지) 나는 죽지 않는 서비스를 발견

unbindService(_serviceConnection); 
// Do some initialization on service 
bindService(new Intent(this, MainService.class), _serviceConnection, Context.BIND_AUTO_CREATE); 

(들의 OnDestroy가 실행되지 않습니다); I에 의해 그렇게 (나는 그렇게 할 이유가 주장하지 말자) 그래서 onDestroy() 구현에 의해 수행 된 일부 정적 초기화가 해제되었습니다.

질문 : unbindService()가 서비스를 중지 (onDestory() 실행), 으로 초기화하여 bindService()를 다시 실행할 수 있도록하려면 어떻게해야합니까?

답변

3

Android는 unbindService 또는 stopService으로 전화 한 후에도 서비스를 계속 유지합니다.

서비스 측면에서 일부 데이터를 즉시 다시 초기화해야하는 경우이를 수행하는 서비스 방법을 제공해야 할 가능성이 큽니다.

2

질문 : 당신이 확실 unbindService을 어떻게해야합니까() 서비스를 중지합니다 (onDestory 실행()), 내가 후 초기화를 할 수와 bindService 다시 실행할 수 있도록()?

onDestroy() 이후의 타이밍은 마지막으로 unbindService()입니다. 확실히 비동기입니다. stopService()에게 직접 전화를 걸 수도 있지만 비동기식이기 때문에 언제 멈추는 지 알 수 없습니다.

바인딩 패턴을 사용하여 서비스를 "다시 시작"할 수있는 확실한 방법을 모르겠습니다.

관련 문제