2017-10-12 2 views
-4

Ich habe einen Dienst im Hintergrund ausgeführt und wenn einige Bedingungen erfüllt sind, muss ich ein Fenster am Anfang der Aktivität anzeigen. Ich sollte in der Lage sein, zwischen den Aktivitäten zu navigieren, und dieses Fenster sollte immer oben bleiben, bis der Benutzer es ablehnt.Zeigen Sie eine Übersicht über alle Aktivitäten

Optionen:

  1. habe ich versucht, mit einer Aktivität Dialogdesign verwenden. Das Problem bei diesem Ansatz besteht darin, dass er über die Aktivität verfügt, die zu diesem Zeitpunkt vorhanden war. Wenn ich eine andere Aktivität öffne, steht der "Aktivitätsdialog" hinter dieser neuen Aktivität.

  2. Ich dachte, eine BaseActivity mit einem Rahmenlayout zu implementieren, um dieses "Fenster" jedes Mal anzuzeigen, wenn Sie eine neue Aktivität öffnen. Das Problem ist, dass es wieder angezeigt wird und es sollte nicht, das Fenster sollte statisch sein, während sich die Aktivitäten ändern. Außerdem nicht sicher, wie Transaktionsmanager in einem Service aufgerufen wird, um das Fragment hinzuzufügen.

  3. Ich habe etwas über einen Service gelesen, der eine Ansicht im Window Manager anbringt. Das Problem dabei ist, dass ich nicht sicher bin, ob es eine gute Übung ist.

Irgendwelche Gedanken? Vielen Dank!

+0

https://www.androidhive.info/2016/11/android-floating-widget-like-facebook -chat-head/ – Vij

+0

In diesem Fall schlagen Sie vor, Sie BaseActivity Single-Aktivität-Anwendung verwenden - Ansicht oben in der Aktivität nur ändern diese Ansicht, wenn Ihr Dienst Daten und andere Aufgabe in Fragment, die am Ende der Aktivität ist nur Fragment ersetzen es erhalten schließt nicht deine obere Sicht der Aktivität ....... –

Antwort

1
I have one solution for that 

1. create a static variable in app 

public static Boolean isMatch=false ; 

2. either create dialog or layout that you have to show in activity and manage its show and hide. 

2. Create Thread in activity and add 1000 timer 


Thread thread= new Thread() { 

         int wait = 0; 

         @RequiresApi(api = Build.VERSION_CODES.M) 
         @Override 
         public void run() { 
          super.run(); 

           while (wait < welcomeScreenDisplay) { 
            sleep(100); 
            if(isMatch) 
              { 
             dialog.show(); 

             } 
            wait += 100; 

           } 
         }//run 
        };//welcome thread 
        t.start(); 

3. in service when the condition is true update the value of the variable 


isMatch =true ; 
0

Sie können einen expliziten Broadcast-Empfänger für Ihre App deklarieren, und sobald der Dienst fertig ist, wird automatisch eine Nachricht an die übergeordnete Aktivität gesendet. In dieser Aktivität haben Sie einen Blick auf die Oberseite mit Sichtbarkeit gegangen, und sobald Sie die Sendung erhalten, ändern Sie die Sichtbarkeit

Verwandte Themen