studio siempre servicios segundo procesos plano mantener limite funcion estandar ejecutar cual app aplicaciones aplicacion abierta android service foreground

servicios - mantener aplicacion siempre abierta android studio



¿Cómo determinar si un servicio de Android se está ejecutando en primer plano? (3)

Una variación más eficiente de la respuesta: https://stackoverflow.com/a/36127260/1275265

public static boolean isServiceRunningInForeground(Context context, Class<?> serviceClass) { ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); for (ActivityManager.RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) { if (serviceClass.getName().equals(service.service.getClassName())) { return service.foreground; } } return false; }

Tengo un servicio que creo que se está ejecutando en primer plano. ¿Cómo compruebo si mi implementación está funcionando?


private boolean isServiceRunning(String serviceName){ boolean serviceRunning = false; ActivityManager am = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE); List<ActivityManager.RunningServiceInfo> l = am.getRunningServices(50); Iterator<ActivityManager.RunningServiceInfo> i = l.iterator(); while (i.hasNext()) { ActivityManager.RunningServiceInfo runningServiceInfo = i .next(); if(runningServiceInfo.service.getClassName().equals(serviceName)){ serviceRunning = true; if(runningServiceInfo.foreground) { //service run in foreground } } } return serviceRunning; }

Si desea saber si su servicio se está ejecutando en primer plano, simplemente abra otras aplicaciones grandes y luego verifique si el servicio todavía se está ejecutando o simplemente marque el service.foreground bandera.


public static boolean isServiceRunningInForeground(Context context, Class<?> serviceClass) { ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); for (ActivityManager.RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) { if (serviceClass.getName().equals(service.service.getClassName())) { if (service.foreground) { return true; } } } return false; }