2012-03-13 4 views
2

나는 서비스를 시작하는 활동이 있습니다. 활동이 종료되면 서비스가 백그라운드에서 계속 실행되기를 원합니다. 여기에 몇 가지 질문이 있습니다.안드로이드 활동 서비스에 바인딩

활동 화면을 닫으면 활동이 실제로 중단됩니까? 또는 멈추게하려면 강제로 중지해야합니까?

화면을 닫으면 화면이 멈추는 경우 startService을 사용해야한다고 가정합니다. 그 맞습니까? 그렇다면 다음에 활동이 시작될 때 실행중인 서비스를 처리 할 수있는 방법이 있습니까? 그렇지 않은 경우 서비스에 바인딩 할 수 있습니다.

답변

3

Activity이 더 이상 화면에 표시되지 않으면 중지됩니다. ActivityService에 바인딩하면 Service이 중지되지 않습니다. 그러나 ActivityonDestroy()으로 전화하면 Service에서 바인딩 해제 처리기가 없는지 확인해야합니다.

Service에 처음으로했던 것과 같은 방법으로 리 바인드 할 수 있습니다. 이미 실행중인 을 Service으로 보내면 두 번째 인스턴스가 생성되지 않으므로 안전합니다.

설명하는 것처럼 Service을 시작하는 좋은 방법은 bindService() 전화에 Context.BIND_AUTO_CREATE 인수를 사용하여 시작하는 것입니다.

자세한 내용은 Android docs about bound services에서 확인할 수 있습니다. 처음에는 조금 혼란 스러울 수 있습니다. 자습서 코드는 사용자가 제공 한 샘플에 잘 맵핑 된 것처럼 들리므로주의 깊게 따르십시오.

+0

네, 당신은 완벽하게 대답했다고 생각합니다. 감사. 나는 그 문서들을 읽었지 만 이것은 좋은 설명이다. 빠른 후속 조치 (어쩌면 다른 질문을 열어야합니다). 서비스에 바인딩 한 후에는 시작해야하는 것처럼 보이지 않습니다 (onCreate 메서드가 자동으로 호출 됨). 그 맞습니까? –

+0

맞습니다. 'Context.BIND_AUTO_CREATE' 인자는 아직 시작되지 않았다면 시작되도록합니다. 사실, 시작되지 않은 서비스에 바인딩 할 수 없으므로 바인딩이 발생하기 전에 서비스가 시작됩니다. – Argyle