2017-11-24 4 views
1

Ich arbeite mit der ActivityRecognitionClient Klasse erhält die Daten der Benutzeraktivität zu erhalten, ob er geht, läuft oder auf dem Fahrrad etc ...Android - ActivityRecognition Servicewerte zurück zu MainActivity

Die Sache ist, dass mit PendingIntent arbeiten, so kann ich die PendingIntent starten, und in der Funktion onHandleIntent kann ich sogar Protokolle der Werte der Aktivität des Benutzers extrahieren. Das Problem ist, dass ich die Werte nicht zu MainActivity extrahieren kann.

Obwohl ich eine Lösung sah here.

Er verwendet SharedPreferences, um die Daten zu übergeben, und in MainActivity implementiert er SharedPreferences.OnSharedPreferenceChangeListener. Wenn also die SharedPreference in der IntentServiceoder in einer anderen Klasse bearbeitet wird, erhält die MainActivity einen Rückruf.

Ich glaube nicht, dass dies die beste Lösung ist, aber ich habe keine andere Lösung gefunden.

Aber was ich nicht verstehe ist, warum es keinen Rückruf auf die PendingIntent.getService() Funktion abgesehen von OnSuccessListener und OnFailureListener gibt.

Was ich getan habe bisher in this gist ist

Vielen Dank für Helfer!

Antwort

1

Um Daten von einem Dienst zu der Aktivität zu erhalten, können Sie Intents, lokalen Broadcast-Empfänger verwenden oder Sie können Ihre Aktivität an Ihren Dienst binden. Wenn Sie sich an Ihren Dienst binden, können Sie beispielsweise einfach einen Rückruf registrieren, aber achten Sie darauf, dass Sie Ihre Ansichten nicht aus dem Hintergrundthread aktualisieren (z. B. einen Handler verwenden, um von einem Hintergrundthread zum UI-Thread zu kommunizieren)

+0

TL ; DR - Binden Sie den Service – Vaiden

Verwandte Themen