El otro día para un proyecto necesitaba saber si una activity de mi aplicación se encontraba a la vista o no, buscando y mirando código por ahí, termine armando esta función, que quizás a alguno pueda ayudar ;)
@Override
public boolean comprobarActivityALaVista(
Context context, String nombreClase){
// Obtenemos nuestro manejador de activitys
ActivityManager am = (ActivityManager)
context.getSystemService(Context.ACTIVITY_SERVICE);
// obtenemos la informacion de la tarea que se esta ejecutando
// actualmente
List< ActivityManager.RunningTaskInfo > taskInfo =
am.getRunningTasks(1);
// Creamos una variable donde vamos a almacenar
// la activity que se encuentra a la vista
String nombreClaseActual = null;
try{
// Creamos la variable donde vamos a guardar el objeto
// del que vamos a tomar el nombre
ComponentName componentName = null;
// si pudimos obtener la tarea actual, vamos a intentar cargar
// nuestro objeto
if(taskInfo != null && taskInfo.get(0) != null){
componentName = taskInfo.get(0).topActivity;
}
// Si pudimos cargar nuestro objeto, vamos a obtener
// el nombre con el que vamos a comparar
if(componentName != null){
nombreClaseActual = componentName.getClassName();
}
}catch (NullPointerException e){
Log.e(TAG, "Error al tomar el nombre de la clase actual " + e);
return false;
}
// devolvemos el resultado de la comparacion
return nombreClase.equals(nombreClaseActual);
}
Espero que les sirva, nos vemos en otro post.
Saludos, Gabriel