2012-12-04 3 views

답변

18

서비스를 시작한 후에 독립적으로 실행되는 서비스의 경우 startService()을 사용하십시오. 음악 플레이어가 좋은 예입니다. 이 전화 번호는 stopSelf()으로 전화하거나 누군가 stopService()으로 전화 할 때까지 계속됩니다.

Intent를 앞뒤로 보내 실행중인 서비스와 통신 할 수 있지만 대부분 서비스를 시작한 다음 실행하면됩니다.

서비스와 클라이언트가 지속적인 연결을 통해 앞뒤로 통신 할 때 bind()을 사용하십시오. 좋은 예는 위치 업데이트를 다시 클라이언트로 전송할 탐색 서비스입니다. 바인더는 의도보다 작성하기가 훨씬 어렵지만 실제로는이 사용 사례로 이동하는 방법입니다. 우선 순위에 관한

: 프로세스의 모든 활동이 자신의 가시성을 잃을 때 onStart() 시작 된 서비스를 호스팅하는 경우, 프로세스는 그렇지 않은 경우는 백그라운드 프로세스하게하는 서비스 프로세스된다. 서비스 프로세스는 백그라운드 프로세스보다 우선 순위가 높습니다. 자세한 내용은 android developer site.

보이는 활동이없는 서비스 프로세스의 우선 순위가 더 높은 경우 (예 : 중단되지 않아야하는 음악 플레이어) 서비스는 startForeground()으로 전화 할 수 있습니다.

+2

Google 개발자 자습서에서는 백그라운드에서 음악을 재생하는 자체 서비스에 활동을 바인딩해야하는 음악 응용 프로그램에 바인딩이 적합 할 것이라고 언급합니다. "그렇다면 startService가 있어야한다고하는 내용이 있습니다. 사용. 나는 지금 당장 나는 묶는 것이나 시작하는 것과 같은 질문으로 어려움을 겪고 있기 때문에 논평하고있다. –

+0

Google 개발자 가이드는 끔찍하고 그리워합니다. –

+0

정말, 어느 쪽이든 작동합니다. startService()는 일반적으로 자체적으로 실행될 서비스에 가장 적합한 선택이며, 앱과 서비스가 일정한 앞뒤로 통신 할 때 bind()가 일반적으로 최선의 선택입니다. 하지만 startService() 스타일의 서비스와 앞뒤로 통신하기 위해 Intent를 사용할 수도 있고, bind()를 사용하여 서비스를 시작한 후 실행시킬 수도 있습니다. 당신이 원하는대로하십시오. 솔직히, 바인더는 많은 작업을 작성하므로 피할 수 있습니다. 바인더 주변의 편리한 래퍼 인 ResultReceiver를 사용할 수도 있습니다. –

관련 문제