1

Ich muss sicherstellen, dass die Aktivität auf dem Bildschirm für die Augen des Benutzers sichtbar ist.Überprüfen, ob die Aktivität sichtbar ist (onResume & Pause passt nicht, wegen Multiwindow-Modus)

Wir können dies tun, indem Sie onResume & onPause Ereignisse in Activity-Klasse und einige boolean in diesen Funktionen einstellen.

Aber onPause ist nicht nur aufgerufen, wenn Sie Ihre Aktivität minimieren, wird onPause auch aufgerufen, wenn Sie auf andere Fenster in Mehrfenstermodus (Android 7.x Nougat)

wird also die boolean onPause & onResume Methode geschaltet führen zu Fehler.

Dann, wie die Sichtbarkeit der Aktivität zu kennen?

Danke für Hilfe.

Antwort

2

Auf Nougat und oben müssen Sie die onStop Methode überprüfen, wird es Ihnen sagen, wenn Ihr Activity nicht sichtbar ist, können Sie diesen Code verwenden:

@Override 
public void onPause() { 
    super.onPause(); 
    if (Build.VERSION..SDK_INT <= 23) { 
    //your activity is not visible 
    onHidden(); 
    } 
} 
@Override 
public void onStop() { 
    super.onStop(); 
    if (Build.VERSION..SDK_INT > 23) { 
    //your activity is not visible 
    onHidden(); 
    } 
} 

Unter der Annahme, dass Ihr onHidden Methode eine Aktion wird durchzuführen.

fand ich diesen interessanten Link zu Ihrem Problem: Multiwindow

+1

Dank, das funktioniert, außerdem habe ich dies in onPause hinzugefügt haben: 'if (activity.isInMultiWindowMode() == false) onHidden()' , kann nützlich sein, wenn zum Beispiel auf Facebook messaneger Blase tippen – ElSajko

Verwandte Themen