Pregunta

En mi aplicación necesito detectar si mi aplicación va a segundo plano o está cambiando a otra actividad de la misma aplicación...Sé que tengo que usar el método onPause...pero ¿cómo puedo distinguir los dos casos?

¡Gracias!

¿Fue útil?

Solución

private static boolean isApplicationGoingToBackground(final Context context) {

        ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
        List<RunningTaskInfo> tasks = am.getRunningTasks(1);
        if (!tasks.isEmpty()) {
            ComponentName topActivity = tasks.get(0).topActivity;
            if (!topActivity.getPackageName().equals(context.getPackageName())) {
                return true;
            }
        }

        return false;
    }

ACTUALIZACIÓN: GetRunningTasks se ha declarado que no tiene garantizado que sea preciso.

Llame a OnStop. OnStop se llama después de que lo que se apodera de la pantalla: si es una actividad en el mismo paquete APK, entonces no vas a entrar en el fondo. Esto requiere el permiso Get_Tasks.

O enlace a un servicio en WetStart & Unwind OnStop: el servicio se estará a la altura cuando todas sus actividades se detengan (o ataques de seguimiento frente a los desapercibidos si no desea confiar en que se llamen a la llamada, porque no podría ...).

Otros consejos

No existe un método directo para obtener el estado de la aplicación en segundo plano o en primer plano, pero incluso yo enfrenté este problema y encontré la solución con onWindowFocusChanged y onStop.Para más detalles: http://vardhan-justlikethat.blogspot.in/2013/05/android-solution-to-detect-when-android.html

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top