2014-03-31 2 views
16

GoogleApiClient를 인스턴스화하고 AsyncTask에 연결하는 데 몇 분 또는 몇 분이 걸릴 수 있습니다. 에 연결하여 처리를 시작합니다.Google API 클라이언트의 인스턴스가 여러 개 있습니까?

한편, 사용자는 자신과 연결 GoogleApiClient의 인스턴스화 활성 B을 트리거한다.

질문 : 앱에 여러 개의 GoogleApiClient 인스턴스가 동시에 연결되거나 작동 할 수 있습니까? 아니면 내 세마포어로 앱 싱글 톤을 유지해야합니까?

답변

6

GoogleApiClient를 여러 개 연결하여 비효율적 일 수 있습니다. AsyncTasks가있는 GoogleApiClient를 사용하면주의가 필요하며, 활동이 사라지면 연결이 끊어지지 않습니다.

보유 된 조각 내에서 GoogleApliClient를 관리하는 것이 좋습니다. http://www.androiddesignpatterns.com/2013/04/retaining-objects-across-config-changes.html

+0

감사합니다 (특히 링크). – seanpj

+0

활동이 사라져도 비동기 작업을 계속하려면 어떻게해야합니까? 언제 내가 API 클라이언트에서 "연결 끊기"라고해야합니까? – shem

15

많은 GoogleApiClient를 원하는대로 유지하는 것이 좋으며, 이렇게하는 것이 좋은 이유가 있습니다 (단편, 다른 계정 등의 분리). 또한 비효율적이지 않습니다. 두 고객의 비용은 한 고객의 비용보다 1 % 미만입니다.

모두가 오류를 해결하려고하면 혼란 스러울 수 있으므로 조각 클라이언트가 연결 실패를 무시하고 문제 또는 해결할 책임이있는 활동 또는 응용 프로그램 수준 클라이언트를 만드는 것이 좋습니다.

+0

googleApiClient 연결이 항상 연결된 서비스를 사용하는 것이 좋지 않습니까? 나는 내 시계에서 메시지를받을 수 있도록 항상 연결된 안드로이드웨어 watchface 서비스를 가지고 있습니다. googleApiClient를 항상 연결하여 데이터 영역에서 메시지를 수신하도록해야합니까? – DeNitE

+0

Android Wear를 모르지만 첫 번째 부분에 답할 수 있습니다. "나쁘지"않은 것은 아니지만 확실히 "좋지"않습니다. googleApiClient 연결을 유지하면 서비스가 열려 있습니다. 이 서비스는 유지 관리 비용이 많이 들고, 사용하는 API의 많은 부분이 더 비싸게 사용됩니다. 이로 인해로드가 증가하고 장치가 느려지고 사용자 불만이 생기고 작업 관리자가 앱을 종료하게됩니다. 결국, 일반적인 조언은 사용자가 앱을 적극적으로 사용하는 경우 연결을 유지하고 백그라운드로 들어가서 주기적으로 설문 조사를 할 때 닫습니다. Android의 착용은 다를 수 있습니다. – Hounshell

+1

Wearable.MessageApi 또는 Wearable.DataApi를 사용하여 Activity/Fragment에서 직접 메시지를 수신하려는 경우 @Hounshell 예. GoogleApiClient에 연결해야합니다. 하지만 WearableListenerService를 확장하고 onDataChanged() 또는 onMessageReceived()를 재정 의하여 직접 GoogleApiClient에 연결할 필요가 없도록 할 수 있습니다. 이 시점에서 할 수있는 일은 브로드 캐스트 리시버/이벤트 버스를 사용하여 활동/프래그먼트에 이벤트를 전송하는 것입니다. – Milan

0

매우 일반적인 OOP 구성 지식 및 공장 디자인 패턴으로 문제가 해결됩니다. 아래의 @Hounshell과 같이 1 % 정도의 것을 말하면 엔지니어링 접근 방식이 아닙니다.