SyncAdapter- onPerformSync hat keinen Internetzugang

8

Ich habe eine Klasse SyncAdapter , die sich mit einem MQTT-Broker verbindet und Nutzdaten für den Server veröffentlicht, um die Nutzdaten zu empfangen. Es scheint jedoch, dass, obwohl die Methode onPerformSync() aufgerufen wird, der Internetzugang nicht vorhanden ist. Ich dachte, die Verwendung von SyncAdapter garantiert den Internetzugang?

Hier ist die SyncAdapter-Klasse

%Vor%

Und auch ein Ausschnitt meines Android Manifests zum MqttService und SyncAdapter:

%Vor%

Hat das etwas damit zu tun, die Synchronisierung manuell aufzurufen? wie, was ich unten gemacht habe?

%Vor%

Sogar die Synchronisation über Settings->Account->Sync now hat das selbe Ergebnis ergeben.

    
Andy Aldo 20.05.2017, 14:04
quelle

1 Antwort

1

Lass mich etwas erklären.

onPerformSync () ist ein Callback, dessen Steuerung nicht davon abhängt, wie / wann er aufgerufen wird? Diese Art von Callbacks sind in der Regel Async-Tasks, die jederzeit von externen (kann remote) Objekten ausgelöst werden können. Aus diesem Grund setzen wir diese Art von Callbacks generell in unseren MainThread (UI-Thread), da MainThread nicht in der gesamten App gelöscht werden kann. [Hinweis: Wenn Sie einen Service in dem anderen Prozess ausgeführt haben, können Sie onPerformSync () auch von diesem Service ausführen]. Meine Absicht, dies zu sagen ist sicherzustellen, dass während der gesamten App läuft, gibt es eine Änderung dieser Callbacks jederzeit ausgeführt werden können.

Ich sehe wirklich keine Verwendung der onNetworkAvailable () Methode hier. Sie verwenden diese onNetworkAvailable (), wenn Sie einige Netzwerkoperationen von Ihrer Seite aus ausführen möchten.

    
Uddhav Gautam 21.07.2017 18:38
quelle