lunes, 31 de marzo de 2014

Como puedo comprobar si una activity esta a la vista?

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