2011-10-06 7 views
8

En este tema se continúe de esta: Android. How to start activity without creating new one?¿Cómo reutilizar las actividades? No crear actividad cada vez

He leído que las actividades se destruyen cuando hacer clic en el botón ATRÁS. No se pueden destruir cuando se mueven más profundo para apilar y luego devolver las actividades. usando android:launchMode="singleTask" por ejemplo

¿es posible que las actividades no se destruyan cuando hago clic en el botón ATRÁS y luego ejecuto la actividad nuevamente?

+1

No lo recomendaría porque el usuario tiene la opción de presionar el botón de inicio para hacer eso (Android matará su aplicación de todos modos si necesita memoria). Debido a estas decisiones, los usuarios comienzan a usar Task Killer, que son un desastre (en mi opinión). Entonces los desarrolladores están tratando de hacer que sus aplicaciones funcionen porque el usuario está matando a su aplicación por un asesino de tareas ... No te metas con el ciclo de vida de Android ;-) – Knickedi

+0

¿Por qué querrías hacer esto? I. No se puede pensar en un beneficio único. – frostymarvelous

+0

Una ventaja es que si el diseño de la actividad es complejo y requiere, p. 10 segundos para cargarse, entonces uno puede guardar esos 10 segundos con la reutilización de la actividad sin crearla desde cero. – Ehsan

Respuesta

0

Puede redefinir el método de "OnBack" de su actividad, algo así como

public void onBackPressed() 
{ 
    moveTaskToBack (true); 
} 
16

La implementación predeterminada del botón de retroceso es el acabado de la actividad actual. Sin embargo, puede interceptar esa pulsación de tecla y hacer lo que desee con ella. Por ejemplo, en lugar de terminar su actividad actual, podría "mostrar" la actividad anterior y así hacer que parezca que la implementación normal está próxima.

para interceptar el botón de retroceso de prensa: Android: intercepting back key

Y para iniciar su actividad anterior sin crear uno nuevo cada vez que:

Intent i = new Intent(View.getContext(), PreviousActivity.class); 
i.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 
startActivity(i); 

Buena suerte.

+0

+1 Gracias. Funciona bien –

+1

Encontré esta respuesta útil, pero una nota de advertencia para los desarrolladores desprevenidos: cuando necesita un contexto, ** no use el contexto de la aplicación ** a menos que sepa lo que está haciendo . En este caso, puede simplemente pasar 'this' (la instancia de la actividad actual) en lugar del Contexto de la aplicación. –

+0

Gracias chicos ... me salvaste el tiempo ... !!! –

0

Puede detener la actividad para la que se cierra al presionar hacia atrás button.You también puede deshabilitar el botón atrás mediante el siguiente método

public void onBackPressed() 
{ 
    //super.onBackPressed(); 
} 

también se puede empezar una nueva actividad si el usuario haga clic en el botón atrás como

public void onBackPressed() 
{ 
    startActivity(new Intent(context, newActivity.class)); 
} 

En realidad, debería finalizar la actividad si el usuario presiona el botón Atrás. Si no puede haber más actividad, la pila de respaldo se mantendrá, por lo que puede haber problemas de memoria, de modo que Android destruirá su actividad. vínculos que están detenidos y no se reanudan durante mucho tiempo.

+0

Cuidado: el nuevo método 'onBackPressed()' requiere API 5 o superior. Use onKeyDown para dispositivos más antiguos. –

+0

'onBackPressed()' requiere API7 y superior así que si queremos implementar un nivel inferior a API5 tenemos que usar onKeyDown – Dharmendra

+0

¿Extraño algo? Sigo pensando que es [API5] (http://developer.android.com/reference/android/app/Activity.html#onBackPressed()).:) –

Cuestiones relacionadas