Saltar al contenido

¿Cómo verificar si una actividad es la última en la pila de actividades para una aplicación?

Después de mucho trabajar hemos encontrado el resultado de esta dificultad que agunos usuarios de este espacio presentan. Si quieres compartir algún detalle puedes aportar tu conocimiento.

Solución:

Voy a publicar el comentario de @H9kDroid como la mejor respuesta aquí para las personas que tienen una pregunta similar.

Puede usar isTaskRoot() para saber si la actividad es la raíz de una tarea.

espero que esto ayude

ACTUALIZACIÓN (julio de 2015):

Dado que getRunningTasks() queda en desuso, desde API 21 es mejor seguir raukodraug responder o Ed Burnette uno (preferiría el segundo).

Existe la posibilidad de verificar las tareas actuales y su pila usando ActivityManager.

Entonces, para determinar si una actividad es la última:

  • solicite los permisos android.permission.GET_TASKS en el manifiesto.
  • Usa el siguiente código:

    ActivityManager mngr = (ActivityManager) getSystemService( ACTIVITY_SERVICE );
    
    List taskList = mngr.getRunningTasks(10);
    
    if(taskList.get(0).numActivities == 1 &&
       taskList.get(0).topActivity.getClassName().equals(this.getClass().getName())) 
        Log.i(TAG, "This is last activity in the stack");
    
    

Tenga en cuenta que el código anterior será válido solo si tiene una sola tarea. Si existe la posibilidad de que exista esa cantidad de tareas para su aplicación, deberá verificar otras lista de tareas elementos. Leer más sobre tareas Tareas y Back Stack

Espero que esto ayude a los nuevos principiantes, según las respuestas anteriores que me funcionan bien, también estoy compartiendo un fragmento de código para que sea fácil de implementar.

solución : solía isTaskRoot() que regresan true si la actividad actual es solo actividad en su pila y aparte también manejo caso en el cual si tengo algo de actividad en la pila, vaya a la última actividad en la pila en lugar de abrir una nueva uno personalizado

en tu actividad

   @Override
    public void onBackPressed() 

        if(isTaskRoot())
            startActivity(new Intent(currentActivityName.this,ActivityNameYouWantToOpen.class));
            // using finish() is optional, use it if you do not want to keep currentActivity in stack
            finish();
        else
            super.onBackPressed();
        

    

Sección de Reseñas y Valoraciones

Si guardas algún dilema o forma de aclarar nuestro reseña eres capaz de escribir un paráfrasis y con deseo lo interpretaremos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *