부울 검사를 통해 수행되는 #bindService를 호출 한 경우 #unbindService (동일한 컨텍스트에서) 만 호출하려는 모든 코드 예제에서 나타납니다.bindService/unbindService 호출을 완벽하게 쌍으로 연결해야합니까?
#bindService 호출에는 비슷한 검사가 없습니다. 즉, 먼저 "이중 바인딩"을 피하기 위해 먼저 바인딩했는지 확인하지 않습니다.
그래서 내 질문 -
- 내가 서비스를 여러 번 바인드하지만 한 번만 바인딩 해제, 또는 내가 한 번 바인딩하고 여러 번 바인딩을 해제 할 경우에만 나쁜 경우 "나쁜 일이 일어날 것"? 그런 비대칭 성이 나에게는 이상한 것처럼 보이지만 그 답을 아는 사람이 있는지 알고 싶었습니다. 나는 그것을 스스로 알아 내려고 노력하고 있지만 더 많은 경험을 가진 devs의 "공식적인"대답을 선호한다.
- "바인딩"및 "바인딩되지 않은"작업으로 간주되는 것은 무엇입니까? 사실 #bind (또는 #unbind) API를 호출하고 해당 호출을 쌍으로 연결해야합니다. 그렇지 않으면 바인딩 된/페어링되어야하는 # onServiceConnected/Disconnected 콜백에 의해 표시되는 언 바운드 상태? 구글 자신의 예제가 사실을 나타내는 것처럼 보입니다. 누구든지 확인할 수 있습니까? 이전 항목이 사실이라면 #bindService가 false를 반환하면 안드로이드는 서비스를 해결할 수 없으므로 연결을 시도하지 않습니다.이 경우 #unbindService를 호출해도 안전합니까?
고맙습니다.
같은 서비스 연결로 두 번 (또는 그 이상) 바인딩 할 수있는 방법은 무엇입니까? – pskink
예 문서를 보았는데 제 질문에 아주 답하고 있지 않습니다. "이해가되지 않더라도 같은 연결에 두 번 바인딩 할 수있는 것처럼 보입니다. 그게 내가이 질문을하는 이유의 일부입니다. 이러한 방법을 중심으로 공식 계약을 찾고 있었기 때문에 견본 사용에 대한 일반적인 지침뿐만 아니라 강력한 응용 프로그램을 만들 수 있습니다. 언제나 Google의 의사는 매우 피상적이며 적절한 계약 사양이 아닙니다. 내 앱에서 완벽한 연결/연결 해제 쌍을 얻지 못할 수도있는 상황이 있으며이를 처리하는 방법을 더 잘 이해하고 싶습니다. – Creos
동일한 ServiceConnection을 사용하여 bindService를 호출하더라도 여러 번 onServiceConnected가 한 번만 호출됩니다. 두 번째 호출 이후 호출이 no-ops이고 unbindService가 작업을 수행함을 나타냅니다. – pskink