2014-06-21 2 views
3

onBind() 메서드의 "바인딩"동작이 onStartCommand()과 다른 점은 무엇입니까?onStartCommand()와 onBind()의 차이점

onStartCommand() 

는 "이러한 활동과 같은 다른 구성 요소, 서비스가 startService()를 호출하여 시작하도록 요청할 때 시스템이이 메소드를 호출합니다." 다른 구성 요소 bindService()를 호출 서비스 (예를 RPC를 수행하기 위해)과 결합하려고 할 때

onBind() 

시스템은이 메소드를 호출한다.

여러 명의 사용자로부터 메시지를받는 채팅 클라이언트 서비스를 작성하고 싶습니다. 어떤 기능이 더 적절할 것입니까?

답변

6

Service이 작업을 시작하면 첫 번째 (onStartCommand())가 호출됩니다. onCreate()이 완료되었으며 수행해야 할 작업을 수행 할 준비가되었습니다.

두 번째 (onBind())는 다른 스레드가 서비스에 연결하여 통신 할 수 있도록 등록 할 때 호출됩니다. 인터페이스 유효성 검증 또는 등록 활동으로의 콜백과 같은 여기에서 통신 수단을 구성하거나 설정할 수 있습니다.

바인딩을 사용하면 서비스를 예를 들어 활동의 수명에 연결할 수 있습니다. 활동이 완료되면 서비스가 해제되고 자체적으로 완료 될 수 있습니다. 서비스는 여전히 무언가가 묶여있는 한 지속됩니다.

2

바운드 서비스는 바운드 활동이 더 이상 없을 때 종료됩니다. 또한 Binding을 사용하면 AIDL과 같은 인터페이스를 통해 추가 명령을 보낼 수 있습니다. 당신의 경우에는, 당신이 바운드 서비스를 원한다고 생각합니다. 아마 서비스가 그 활동보다 오래 지속되기를 원하지 않을 것입니다.