2016-03-24 2 views
3

Die vage javadoc von GoogleApiClient sagt uns, dass:Was ist die GoogleApiClient-Verbindungswiederholungsrichtlinie, nachdem eine Verbindung unterbrochen wurde?

GoogleApiClient.ConnectionCallbacks.onConnectionSuspended 

sein wird:

aufgerufen, wenn der Kunde vorübergehend in einem getrennten Zustand ist. Dies kann passieren, wenn ein Problem mit dem Remote-Dienst auftritt (z. B. verursacht ein Systemabsturz oder ein Ressourcenproblem, dass es vom System beendet wird). Beim Aufruf wurden alle Anfragen abgebrochen und keine ausgehenden Listener ausgeführt. GoogleApiClient versucht automatisch, die Verbindung wiederherzustellen. Anwendungen sollten Benutzeroberflächenkomponenten deaktivieren, die den Dienst erfordern, und auf einen Aufruf von onConnected (Bundle) warten, um sie wieder zu aktivieren.

Leider sagt es uns nicht, wie oft es versuchen wird, die Verbindung "wiederherzustellen". Gibt es eine Zeitüberschreitung, exponentiellen Backoff, Anzahl der Wiederholungen?

Wenn es nicht auf magische Weise gelingt die Wiederherstellung der Verbindung es nicht nennen:

OnConnectionFailedListener.onConnectionFailed 

und wann?

+0

Ab sofort gibt es keine Dokumentation bezüglich der GoogleApiClient Reconnect-Richtlinie. Ich würde vorschlagen, Ihr Feature/Dokument [Anfrage] (https://code.google.com/p/android/) zu protokollieren. Auf diese Weise kann das Dokument aktualisiert werden, und es können Funktionen hinzugefügt werden, die die Richtlinien für die erneute Verbindung betreffen. –

+0

Danke für den Hinweis auf den Tracker. – bobymicroby

Antwort

0

Ich habe das Projekt abgerollt und Code hat in der Zwischenzeit geändert ...

Wenn ich mich richtig erinnere, versucht es einmal wieder zu verbinden, unter der Annahme, dass die Verbindung aufgrund eines Ausfalls ausgesetzt wurde (die häufigste Ursache). Dann würde ich annehmen, dass es am Ende entweder onConnectionFailed() oder onConnected() aufrufen würde, aber ich würde mich nicht darauf verlassen. Ich denke, Sie können dies überprüfen, indem Sie den GMS-Prozess beenden, während Ihre App verbunden ist, aber selbst wenn Beweise zeigen, dass dies der Fall ist, würde ich mich nicht darauf verlassen, es sei denn, es ist dokumentiert.

Ich würde nicht erwarten, dass es mehr als einmal wiederholt, wenn es nicht verbindet, oder jemals zu stoppen, wenn es verbindet und der Dienst erneut abstürzt.

Wenn ich etwas baute, das den Client benutzte und ich wollte so defensiv wie möglich sein, würde ich einer unterbrochenen Verbindung nicht vertrauen. Ich würde explizit disconnect() und connect() erneut anrufen, um die Verbindung neu aufzubauen.