Aufrufmethode in einer laufenden Aktivität von einem Service

9

Ich arbeite gerade an einem Android-Projekt.

Bisher habe ich Firebase implementiert, insbesondere FirebaseInstanceIdService und FirebaseMessagingService:

%Vor%

}

%Vor%

Was ich erreichen möchte, ist folgendes:

Wenn die App im Hintergrund ist, möchte ich nur eine einfache Benachrichtigung in der Benachrichtigungszentrale haben. (Dies funktioniert bereits)

ABER, wenn die App im Vordergrund ist und gerade läuft, möchte ich ein anderes Verhalten haben: Ich möchte die Push-Benachrichtigung konsumieren und stattdessen eine Warnung anzeigen.

Aber meine Frage ist: Wie kann ich mit der laufenden Aktivität des Dienstes interagieren oder was ist der richtige Weg, um das beabsichtigte Verhalten zu erreichen? Das muss eine einfache Lösung sein, oder?

Vielen Dank im Voraus

    
fabi_k 13.04.2017, 12:05
quelle

4 Antworten

5

schreibe diesen Code in die Anwendungsklasse

%Vor%

Schreiben Sie diesen Code in jeder Methode onresume und in der Onpause-Methode set null

%Vor%

Jetzt können Sie die Aktivitätsmethode aus der Serviceklasse

aufrufen %Vor%     
Hitesh Gehlot 13.04.2017 12:14
quelle
2
  

Wie kann ich mit der laufenden Aktivität des Service interagieren oder was ist der richtige Weg, um das beabsichtigte Verhalten zu erreichen?

Der beste Weg wäre einfach, Event Bus (zB GreenRobot oder lokale sendung ). Ihre Aktivität registriert den Listener in onResume() (und meldet sich in onPause() ab) und Ihr Dienst sendet einfach die Nachricht, wenn die Zeiten kommen.

Der Hauptvorteil besteht darin, dass Sie beide Elemente (Dienst und Aktivität) vollständig getrennt halten. Sie vermeiden auch die schlimmstmögliche Lösung - indem Sie die Methoden von Activity direkt aufrufen.

Um herauszufinden, ob Sie im Hintergrund sind oder nicht, empfiehlt es sich, die GreenRobot ActivityLifecycleCallbacks - es hat keinen Sinn, Aktivitäten zu erzwingen, um dies zu melden, da dies keinen Vorteil bringt davon.

    
Marcin Orlowski 13.04.2017 12:15
quelle
1

versuche es mit:

Diese Methode überprüft alle laufenden Apps und gibt true oder false zurück, unabhängig davon, ob sich die aktuelle App im Hintergrund oder im Vordergrund befindet.

%Vor%     
Divyesh Patel 13.04.2017 12:11
quelle
0

Versuchen Sie

1. Registrieren Sie benutzerdefinierte Broadcast-Empfänger in Ihrer Aktivität

%Vor%

2. Senden Sie eine Sendung von Ihrem Dienst

%Vor%     
Pehlaj 13.04.2017 12:20
quelle