2017-10-12 5 views
-4

J'ai un service fonctionnant en arrière-plan et lorsque certaines conditions sont remplies, j'ai besoin d'afficher une fenêtre en haut de l'activité. Je devrais être capable de naviguer entre les activités et cette fenêtre devrait toujours rester statique sur le dessus jusqu'à ce que l'utilisateur la rejette.Afficher une vue au-dessus de toutes les activités

Options:

  1. J'ai essayé avec une activité en utilisant Thème de dialogue. Le problème avec cette approche est qu'elle sera au-dessus de l'activité qui était à ce moment-là. Si j'ouvre une autre activité, le "dialogue d'activité" sera derrière cette nouvelle activité.

  2. J'ai pensé à implémenter une BaseActivity qui a une disposition de trame afin de montrer cette "fenêtre" chaque fois que vous ouvrez une nouvelle activité. Le problème est que c'est en train d'être montré à nouveau et il ne devrait pas, la fenêtre devrait être statique pendant ce temps les activités changent. Vous ne savez pas comment appeler le gestionnaire de transactions dans un service pour ajouter le fragment.

  3. J'ai lu quelque chose à propos d'avoir un service qui va attacher une vue sur le gestionnaire de fenêtres. Le problème avec ceci est que je ne suis pas sûr que ce soit une bonne pratique.

Des pensées? Merci!

+0

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

+0

Pour cela vous suggérer d'utiliser l'application SingleActivity BaseActivity - obtenir une vue en haut de l'activité changez simplement cette vue lorsque votre service obtient des données et que d'autres tâches fonctionnent dans un fragment qui est en bas de l'activité ne ferme pas votre vue supérieure de l'activité ....... –

Répondre

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

vous pouvez envoyer un déclarer un récepteur de diffusion explicite pour votre application et une fois que le service est fait alors automatiquement enverra un message à l'activité parente. Dans cette activité, vous aurez une vue en haut avec la visibilité disparue, et une fois que vous recevez la diffusion changer la visibilité