2017-11-24 20 views
-1

リモートイベントに基づいてアプリケーションからフォアグラウンドサービスを開始する必要があります。ほとんどの場合、ユーザーはアプリを表示してアプリが表示されますが、ユーザーが別のアプリを使用している場合、または画面が表示されなくなることがあります。アプリがバックグラウンドにあるかどうかを確認するにはどうすればよいですか?

アプリがバックグラウンドであるかどうかに基づいて、startServiceまたはstartForegroundServiceに電話する必要があるかどうかをAndroid 8 +で決めるロジックが必要です。では、どうすればこのことを知ることができますか?

編集:私は別の答えで、とonResumeのフラグを保持できることを知りましたが、今はもっと良い方法があると思っていましたか? GoogleのI/Oから

+1

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

+0

私はその答えを見ていたが、それは2011年から、本当に最高の方法はまだありますか? – casolorz

+1

https://stackoverflow.com/questions/26879951/how-to-know-if-my-application-is-in-foreground-or-background-android –

答えて

0

A Kotlinソリューション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 
     } 
     } 

    } 
関連する問題