2016-04-07 16 views
2

In Marshmallow, auch wenn die Anwendung nicht im Hintergrund und Vordergrund. Ich bekomme, wie "Anwendung läuft". Code i verwenden istAndroid Marshmallow 6.0, überprüfen Sie laufende App im Hintergrund

ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); 
    List<ActivityManager.RunningAppProcessInfo> appProcesses = activityManager.getRunningAppProcesses(); 
for (int i = 0; i < appProcesses.size(); i++) { 
     if (appProcesses.get(i).processName.equals("com.alive.moraribapuapp")) { 
      Log.d(TAG, "com.alive.moraribapuapp is true(running)"); 

      return true; 
     } else { 
      Log.d(TAG, "com.alive.moraribapuapp is false(Not running)"); 
      return false; 
     } 
    } 

dies gibt mir gilt auch, wenn die Anwendung in Eibisch geschlossen.

+0

Sind Sie sicher, dass es geschlossen ist? Überprüfen Sie das Einstellungsmenü und prüfen Sie, ob die Option "Force Stop" aktiviert ist. Wenn ja, ist es nicht geschlossen und läuft noch. –

+0

Ori Lintz, aber alle Anwendung hat Force Stop aktiviert, eigentlich verwende ich dies, um die Benachrichtigung zu verbergen, wenn die Anwendung im Vordergrund ist, wie WhatsApp. – Vinay

+0

Nein, alle laufenden Anwendungen haben Force Stop aktiviert. Außerdem prüfen Sie, ob die App ausgeführt wird. Dies ist nicht das Gleiche wie das Überprüfen, ob es sich im Vordergrund befindet. Anwendungen im Hintergrund sind sehr lebendig und laufen. Wenn Sie wissen möchten, ob Ihre App im Vordergrund ist, müssen Sie wissen, ob eine Aktivität derzeit visuell ist (dh ob der letzte Aktivitätslebenszyklus "onStart" oder "onResume" war, ohne dass "onDestroy" oder "onPause" aufgerufen wurde etc) –

Antwort

2

rashad.z, Problem gelöst, wir müssen manuell überprüfen, ob aap in Vordergrund ist oder nicht.

private boolean isAppOnForeground(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; 
     } 
    } 

    Log.d("MyGcmListenerService", "" + isInBackground); 
    return isInBackground; 
} 
+0

ok danke für die Antwort –

Verwandte Themen