2014-09-26 34 views
20

Używam GoogleApiClient w usłudze, aby żądać bezpiecznych aktualizacji lokalizacji. Każda rzecz działa poprawnie, ale czasami połączenie jest zawieszone i wywoływane jest połączenieConnectionSuspended.GoogleApiClient onConnectionPo zawieszeniu, czy powinienem ponownie zadzwonić do mGoogleApiClient.connect()?

@Override 
public void onCreate() { 
    ... 
    mGoogleApiClient = new GoogleApiClient.Builder(this) // this is a Context 
    .addApi(LocationServices.API) 
    .addConnectionCallbacks(this) // this is a [GoogleApiClient.ConnectionCallbacks][1] 
    .addOnConnectionFailedListener(this) // 
    .build(); 

    mGoogleApiClient.connect(); 

    ... 
} 

@Override 
public void onConnectionSuspended(int arg0) { 

    // what should i do here ? should i call mGoogleApiClient.connect() again ? ? 

} 

w linku powyżej (ConnectionCallback doc) mówi:

Wnioski należy wyłączyć elementy interfejsu, które wymagają naprawy, i czekać na wezwanie do onConnected (Bundle), aby ponownie je włączyć.

Ale jak zadziała to połączenie z połączonym? czy powinienem ponownie zadzwonić do mGoogleApiClient.connect()? lub mGoogleApiClient będzie kontynuować próby połączenia nawet po zawieszeniu połączenia?

Odpowiedz

34

GoogleApiClient automatycznie spróbuje ponownie się połączyć. Nie musisz ponownie dzwonić pod numer connect().

+0

Cześć Hounshell, dziękuję za odpowiedź, ale jak możesz być tego pewien? czy jest jakiś dokument, który tak mówi? – Turkish

+23

Jestem oryginalnym autorem GoogleApiClient. Spróbuję dodać dokumentację do następnej wersji, która to wyjaśnia. – Hounshell

+0

@Hounshell Dziękuję. A proces wylogowania z Google plus jest żmudnie kłopotliwy. Czy możesz to również udokumentować? Istnieją dziesiątki pytań dotyczących tego w StackOverflow. Dokumentacja jest bardzo wąska i myląca (w porównaniu z Facebookiem). – VipulKumar

0

The onConnected() doc mówi follwing:

Po wywołaniu connect(), ta metoda zostanie wywołana asynchronicznie gdy żądanie connect została pomyślnie zakończona.

Oznacza to, że należy zadzwonić pod numer connect(), ponieważ w przeciwnym razie onConnected() nie zostanie wywołany.

+0

To prawda, że ​​musimy połączyć się z serwerem po utworzeniu GoogleApiClient. Ale w oparciu o odpowiedź @hounshell, nie musimy wywoływać połączenia ponownie, ponieważ zostanie ono wywołane automatycznie. –