Android: cómo verificar si la aplicación se está ejecutando en segundo plano

Soy un novato en Android. Tengo una aplicación basada en servidor de cliente. El servidor sigue enviando las notificaciones de actualización al cliente después de cada minuto y, en el lado del cliente, mi aplicación recibe esas actualizaciones y las muestra con Toast. Pero ahora mi problema es que cada vez que mi aplicación de cliente entra en el servidor de fondo, sigo enviando las notificaciones de actualización y mi cliente la muestra como si la aplicación estuviera en primer plano. No entiendo cómo comprobar que la aplicación se está ejecutando en segundo plano.

http://developer.android.com/guide/topics/fundamentals.html#lcycles es una descripción del ciclo de vida de una aplicación de Android.

Se llama al método onPause () cuando la actividad pasa al segundo plano. Entonces puedes desactivar las notificaciones de actualización en este método.

Actualización, mira esto primero:

Verifica si una aplicación de Android se ejecuta en segundo plano


Para verificar si su aplicación se envía a segundo plano, puede invocar este código en onPause() en cada actividad de su aplicación:

  /** * Checks if the application is being sent in the background (ie behind * another application's Activity). * * @param context the context * @return true if another application will be above this one. */ public static boolean isApplicationSentToBackground(final Context context) { ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); List tasks = am.getRunningTasks(1); if (!tasks.isEmpty()) { ComponentName topActivity = tasks.get(0).topActivity; if (!topActivity.getPackageName().equals(context.getPackageName())) { return true; } } return false; } 

Para que esto funcione, debes incluir esto en tu AndroidManifest.xml

  

Solo para API nivel 14 y superior

Puede usar ComponentCallbacks2 para una activity , service , etc.

Ejemplo:

 public class MainActivity extends AppCompatActivity implements ComponentCallbacks2 { @Override public void onConfigurationChanged(final Configuration newConfig) { } @Override public void onLowMemory() { } @Override public void onTrimMemory(final int level) { if (level == ComponentCallbacks2.TRIM_MEMORY_UI_HIDDEN) { // app is in background } } } 

Puede usar getRunningAppProcesses () en ActivityManager.