0

Ich mache eine Chat-App (nur zum Spaß). Ich verwende Pushy API zum Senden von Nachrichten zwischen zwei Benutzern. Nach dem in pushy.me verfügbaren Tutorial werden die Push-Nachrichten in einem Broadcast Receiver empfangen. Nun, dieser Teil funktioniert gut, aber jetzt mache ich ein Benachrichtigungssystem wie Whats App, das eine Benachrichtigungsleiste startet, wenn der Benutzer nicht im Chat ist.Nur Benachrichtigung, wenn Fragment sichtbar ist

Meine Idee ist folgende: Wenn das Chat-Fragment sichtbar ist, aktualisieren Sie einfach das Fragment mit LocalBroadcastManager sendBroadcast-Methode, sonst starten Sie eine Benachrichtigung.

Ich ist dies mit dem folgenden Code mit Erfolg machen:

if (!Utility.isAppInBg(context)) { 
       Intent chatPushNotification = new Intent(Constants.CHAT_PUSH_NOTIFICATION); 
       chatPushNotification.putExtra("chat", obj.toString()); 
       LocalBroadcastManager.getInstance(context).sendBroadcast(chatPushNotification); 
      } else { 
       if (title != null && msg != null) { 

        NotificationUtil.notify(context, NOTIFICATION_ID, notifyIntent, 
          URLDecoder.decode(title, "UTF-8"), URLDecoder.decode(msg, "UTF-8")); 
       } 
      } 

Das Problem ist, dass das Verfahren verwendet isAppInBg Activity mit getRunningAppProcesses() Methode, die abgeraten. Es gibt eine Möglichkeit, diese Methode durch eine andere zu ersetzen, die überprüft, ob ein Fragment sichtbar ist (denken Sie daran, dass diese Überprüfung in einem Broadcast-Empfänger erfolgt). Wenn nicht, gibt es einen besseren Ansatz?

Antwort

0

Dieser Ansatz funktioniert gut für mich.

public class MyActivity extends Activity { 

static boolean active = false; 

@Override 
public void onStart() { 
    super.onStart(); 
    active = true; 
} 

@Override 
public void onStop() { 
    super.onStop(); 
    active = false; 
} 

@Override 
public void onPause() { 
    super.onPause(); 
    active = false; 
} 

@Override 
public void onResume() { 
    super.onResume(); 
    active = true; 

} 

und in Empfänger

if(!MyActivity.active){ 
    //alert notification 
} 
else{ 
    //send broadcast 
} 
+0

Wow, so einfach und sauber! Klappt wunderbar! Vielen Dank! –