2017-11-24 1 views
-1

Ich muss einen Vordergrund-Service von meiner App basierend auf einem Remote-Ereignis starten. Die meiste Zeit, wenn dies passiert, wird der Benutzer in der App sein und die App wird sichtbar sein, aber zu einem kleinen Teil der Zeit wird der Benutzer in einer anderen App sein oder der Bildschirm wird ausgeschaltet sein.Wie kann ich feststellen, ob meine App im Hintergrund ist?

Also ich möchte Logik haben, die auf Android 8 entscheidet, ob es startService oder startForegroundService aufrufen sollte, basierend darauf, ob die App im Hintergrund ist oder nicht. Wie kann ich das wissen?

Edit: Ich habe auf einer anderen Antwort, dass Sie nur eine Flagge für und onResume halten können, aber ich hatte gehofft, es wäre jetzt ein besserer Weg?

+1

https://stackoverflow.com/questions/5504632/how-can-i-tell-if-android-app-is-running-in -the-foreground –

+0

Ich hatte diese Antwort gesehen, aber es ist von 2011, ist das wirklich der beste Weg noch? – casolorz

+1

https://StackOverflow.com/Questions/26879951/How-to-know-if-my-application-is-in-foreground-or-background-android –

Antwort

0

A Kotlin Lösung von Google I/O 2016

class YourApplication : Application() { 

     override fun onCreate() { 
     super.onCreate() 
     registerActivityLifecycleCallbacks(AppLifecycleTracker()) 
     } 

    } 


    class AppLifecycleTracker : Application.ActivityLifecycleCallbacks { 

     private var numStarted = 0 

     override fun onActivityStarted(activity: Activity?) { 
     if (numStarted == 0) { 
      // app went to foreground 
     } 
     numStarted++ 
     } 

     override fun onActivityStopped(activity: Activity?) { 
     numStarted-- 
     if (numStarted == 0) { 
      // app went to background 
     } 
     } 

    } 
Verwandte Themen