2017-07-20 16 views
1

私のアプリケーションの状態を確認したい、今すぐ簡単に私は、バックグラウンドまたはフォアグラウンドの下のコードを使用して私のアプリを取得していますが、私はアプリをチェックする方法を知らないか、誰もこの問題のために助けることができます。以下のコードを使用して、私はバックグラウンドまたはフォアグラウンドでアプリをチェックしています。アンドロイドアプリがバックグラウンドかフォアグラウンドかどうかを確認する方法

public static boolean isAppIsInBackground(Context context) { 
     boolean isInBackground = true; 
     ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); 
     if (Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT_WATCH) { 
      List<ActivityManager.RunningAppProcessInfo> runningProcesses = am.getRunningAppProcesses(); 
      for (ActivityManager.RunningAppProcessInfo processInfo : runningProcesses) { 
       if (processInfo.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) { 
        for (String activeProcess : processInfo.pkgList) { 
         if (activeProcess.equals(context.getPackageName())) { 
          isInBackground = false; 
         } 
        } 
       } 
      } 
     } else { 
      List<ActivityManager.RunningTaskInfo> taskInfo = am.getRunningTasks(1); 
      ComponentName componentInfo = taskInfo.get(0).topActivity; 
      if (componentInfo.getPackageName().equals(context.getPackageName())) { 
       isInBackground = false; 
      } 
     } 
     return isInBackground; 
    } 
+1

これはいくつかの使用の可能性がありonStop方法を確認してください。https://stackoverflow.com/questions/7601315/can-you-track-when-an-android-終了したアプリケーション –

答えて

0

これは完璧なコードがあると

private boolean isAppIsInBackground(Context context) { 
    boolean isInBackground = true; 
    ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); 
    if (Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT_WATCH) { 
     List<ActivityManager.RunningAppProcessInfo> runningProcesses = am.getRunningAppProcesses(); 
     for (ActivityManager.RunningAppProcessInfo processInfo : runningProcesses) { 
      if (processInfo.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) { 
       for (String activeProcess : processInfo.pkgList) { 
        if (activeProcess.equals(context.getPackageName())) { 
         isInBackground = false; 
        } 
       } 
      } 
     } 
    } else { 
     List<ActivityManager.RunningTaskInfo> taskInfo = am.getRunningTasks(1); 
     ComponentName componentInfo = taskInfo.get(0).topActivity; 
     if (componentInfo.getPackageName().equals(context.getPackageName())) { 
      isInBackground = false; 
     } 
    } 
    return isInBackground; 
} 
関連する問題