Detectar cuando la aplicación de Android retrocede
-
27-10-2019 - |
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!
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