2017-05-04 4 views
0

Bounded Services와 완전히 혼동됩니다. 제 질문은 다음과 같습니다. - Binding의 의미는 무엇입니까? 바인더 클래스는 무엇을합니까? 서비스의 리턴 iBinder 객체의 의미는 무엇입니까? IBinder 객체 란 무엇입니까? onBind Method의 작동 원리는 무엇입니까? 이들은 경계 서비스에 관한 몇 가지 질문입니다. 자세히 설명해주십시오. 나는 이미 문서를 읽었습니다. 아직도 명확하지 않습니다. 감사합니다, 감사합니다, 미리 감사드립니다 ...바인더 클래스는 무엇을합니까? Binding의 의미는 무엇입니까? Android Bounded Services에서?

답변

0

바운드 서비스 :

바운드 서비스는 응용 프로그램 구성 요소()가 오랜 연결을 만들 bindService를 호출하여 결합 할 수 있습니다 하나입니다.

액티비티와 응용 프로그램의 다른 구성 요소에서 서비스와 상호 작용하거나 프로세스 간 통신 (IPC)을 통해 응용 프로그램의 일부 기능을 다른 응용 프로그램에 공개하려는 경우 바인딩 된 서비스를 만듭니다.

바인딩 된 서비스를 만들려면 onBind() 콜백 메서드를 구현하여 서비스와의 통신을위한 인터페이스를 정의하는 IBinder를 반환하십시오. 그런 다음 다른 응용 프로그램 구성 요소가 bindService()를 호출하여 인터페이스를 검색하고 서비스에서 메소드 호출을 시작할 수 있습니다. 서비스는 바인딩 된 응용 프로그램 구성 요소를 제공하기 위해서만 사용되므로 서비스에 바인딩 된 구성 요소가 없으면 시스템이이를 제거합니다. onStartCommand()를 통해 서비스가 시작될 때와 동일한 방법으로 바운드 서비스를 중지 할 필요가 없습니다.

IBinder :

바운드 서비스를 만들려면 클라이언트가 서비스와 통신 할 수있는 방법을 지정하는 인터페이스를 정의해야합니다. 이 서비스와 클라이언트 간의 인터페이스는 IBinder 구현이어야하며 onBind() 콜백 메소드에서 반환해야하는 서비스입니다. 클라이언트가 IBinder를 받으면 해당 인터페이스를 통해 서비스와 상호 작용할 수 있습니다.

onBind는()

시스템은 bindService를 호출하여이 메소드를 호출() 다른 구성 요소 (예를 RPC를 수행) 서비스와 결합하고자 할 때. 이 메서드를 구현할 때 클라이언트가 IBinder를 반환하여 서비스와 통신하는 데 사용하는 인터페이스를 제공해야합니다. 항상이 메서드를 구현해야합니다. 그러나 바인딩을 허용하지 않으려면 null을 반환해야합니다.

관련 문제