2010-09-21 12 views
50

Supongo que Android no permitirá que la gente haga esto, porque piensan que tienen un control perfecto para la tarea/aplicaciones. Sin embargo, realmente necesito hacer esto en mi caso.¿Cómo eliminar la aplicación de la lista de aplicaciones recientes?

tengo una actividad a que actúa como punto de entrada de mi solicitud. En esa actividad, lee la preferencia y decide qué actividad comenzar, por ejemplo B o C. Después de eso, se termina. Entonces, la actividad A nunca aparece a los usuarios.

Mis cosas aplicación almacena en la tarjeta sd, y lee de él constantemente. Entonces, cuando la tarjeta SD se desmonta, necesito mostrarle al usuario que la tarjeta sd no está disponible, en lugar de abrir B o C. Establezco una marca en A para mostrar ese mensaje cuando la tarjeta SD no está disponible. Cuando aparece ese mensaje, A no intentará iniciar B o C.

cosas funciona perfectamente si el usuario sólo se entra en mi aplicación de lanzador de aplicaciones. Sin embargo, descubrí que el usuario también puede ingresar a mi aplicación presionando prolongadamente home y seleccionándola de la lista de aplicaciones recientes, si la ha abierto recientemente. Cuando el usuario hace eso, omite A y va directamente a B o C. No tengo el cheque en ambos, por lo que se lanza una excepción mientras intento acceder a la tarjeta SD, y aparece el cuadro de diálogo de forzar cierre.

simplemente puedo mover mi cheque para B y C para solucionar este problema. Pero en el futuro, la cantidad de actividades iniciadas desde A aumentará. Si hay 6 de ellos, tendré que copiar este cheque en 6 lugares. Huelga decir que esto se ve muy feo y es una pesadilla de mantenimiento.

Por lo tanto, la mejor solución debe quitando mi solicitud de lista de aplicaciones recientes cuando se uunmounted la sdcard. Sin embargo, no puedo encontrar cómo hacer esto. Incluso matando el proceso o usando ActivityManager.restartPackage, aún aparece en la lista. ¿Alguien puede decirme cómo eliminarlo de la lista?

+5

'Realmente necesito hacer esto en mi caso' Entonces su diseño es incorrecto – Falmarri

Respuesta

182

tratar

<activity android:name=".MainActivity" 
     android:excludeFromRecents="true" ... 

en la declaración de la actividad de sus AndroidManifest.xml 's.

+1

Thanks Man !! ¡eso hizo el truco! – Jakob

+0

hombre impresionante !! ayudó mucho :) – nithinreddy

+2

Esto debe marcarse como la respuesta correcta. –

4

que no recomendaría para hacerlo, pero me gustaría probar las siguientes opciones:

Opción 1:

En B y C complemento:

protected void onPause() { 
    finish(); 
} 

Opción 2:

Añadir a B y C, el siguiente en la AndroidManifest:

android:noHistory= "true" 
4

Extracción de la aplicación de la lista de aplicaciones recientes es probable que no sea posible, y definitivamente no es la mejor solución. Eso solo confundirá al usuario que espera que todas las aplicaciones se comporten de manera similar.

De todos modos, no creo que vaya a resolver su problema. Si el usuario golpea el inicio mientras está en la Actividad B, luego selecciona su aplicación desde la página de inicio, se iniciará Activiy B nuevamente.

Existen varias maneras de resolver el problema real. Uno fácil podría ser crear una actividad base que realice la verificación de la tarjeta SD y que todas sus actividades se extiendan desde allí. De esa forma, el cheque solo está en un lugar.

2

OK, sé de hecho que se puede hacer en 2.3.4. La aplicación Bloqueo para niños pequeños cuando se abre borra la lista de aplicaciones recientes para que cuando "Bloquee" su teléfono, si mantiene presionada la tecla de inicio la lista estará en blanco. Lamentablemente, no he encontrado cómo hacerlo. Entonces, para cualquiera que esté mirando y leyendo postf que diga que no es posible, no te rindas. Estoy seguro de que no lo soy.

15

sólo tiene que añadir android:excludeFromRecents="true" en la etiqueta de su actividad en los file..its manifiestan fáciles

16

Otros atributos pueden ayudar a su actividad aíslan de otras actividades en el mismo paquete.

<activity 
android:name=".aActivity" 
android:excludeFromRecents="true" 
android:taskAffinity="" 
android:launchMode="singleInstance"> 
11

Es necesario configurar AndroidManifest.xml:

<activity> 
    ... 
    android:excludeFromRecents="true" 
    ... 
</activity> 

o iniciar esta actividad de

intent.setFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); 

y también en AndroidManifest.xml

<activity> 
    ... 
    android:label="" 
    ... 
</activity> 

etiqueta de configuración de la forma vacío permitirá que esta actividad NO se mostrará en la lista de aplicaciones recientes.

+1

muchas gracias. Después de semanas rascándome la cabeza, finalmente encontré el problema de su respuesta. –

0

si quieres Salir de la aplicación sobre el uso Haga clic en este código:

Intent intent = new Intent(Intent.ACTION_MAIN); 
intent.addCategory(Intent.CATEGORY_HOME); 
startActivity(intent); 

para matar a la aplicación completa y quitarlo de la lista Runningapp matar a la aplicación a través de su PID (su desagradable) ... utilizar estas líneas antes del código anterior.

int pid = android.os.Process.myPid(); 
android.os.Process.killProcess(pid); 
Cuestiones relacionadas