2011-07-08 7 views
7

La aplicación se está reiniciando desde la primera pantalla y no conserva la segunda pantalla. La aplicación retiene las actividades de manera normal después del reinicio de la aplicación o si presiona el botón ATRÁS en la aplicación a la pantalla de inicio.

  • El comportamiento correcto debería ser.

La aplicación siempre debe retener las actividades de manera normal.

¿Cómo puedo resolver este problema para mi aplicación? ¿Puedo reiniciar la aplicación durante la primera ejecución?

+0

Detecto la situación de la primera ejecución de la aplicación y la reinicio. if (first_run) { Log.w (TAG, AppHelper.FIRST_RUN); PendingIntent intent = PendingIntent.getActivity (this.getBaseContext(), 0, (nuevo Intent (getIntent())). AddCategory (Intent.CATEGORY_LAUNCHER), Intent.FLAG_ACTIVITY_NEW_TASK); AlarmManager mgr = (AlarmManager) this.getSystemService (Context.ALARM_SERVICE); mgr.set (AlarmManager.RTC, System.currentTimeMillis() + 1000, intento); System.runFinalizersOnExit (verdadero); System.exit (2); return; } – degratnik

Respuesta

1

Dependiendo de cómo la aplicación se define en el archivo de manifiesto y si se dispone de ningún mecanismo para guardar y restaurar su estado ....

Sobre la base de sus pasos, puede crear varias instancias de la misma aplicación (comprobar this)

o no está utilizando la instancia Bunble en onCreate

definitivamente no va a ser automática para todas las aplicaciones para volver a la pantalla guardar que estaba cuando se detuvo o se destruye (algunos aplicación no quiere eso, piense en su banco gestión de cuentas ...)

Editar:

Así que si he entendido bien a partir de sus comentarios, funciona como se espera cuando salga de la aplicación con la tecla BACK, pero no cuando se utiliza la tecla INICIO ...

Leer el enlace que he publicado: http://developer.android.com/guide/topics/fundamentals/tasks-and-back-stack.html

usted va a entender que cuando se pulsa la tecla INICIO, la instancia de la aplicación que estabas en que no se destruye (y por lo que el estado actual no se guarda) . Iniciarlo nuevamente solo inicia otra instancia (desde la pantalla inicial).

Cuando el usuario pulsa la tecla BACK, se destruye la actividad actual y reanuda la actividad anterior.

...

Una tarea es una unidad cohesiva que puede movimiento para el "fondo" cuando los usuarios comienzan una nueva tarea o ir a la pantalla de inicio , a través de la tecla INICIO

Si desea cambiar la forma en que se comporta, consulte launchMode en el manifiesto.

+0

Pero la aplicación retiene las actividades de manera normal después de reiniciar la aplicación o si presiona el botón ATRÁS en la aplicación a la pantalla de inicio. – degratnik

+0

Después de reiniciar la aplicación, todo está bien. – degratnik

+0

No entiendo lo que dice aquí en comparación con la pregunta original ... ¿qué quiere decir con "después de reiniciar la aplicación"? ¿Cómo saliste de la aplicación? – Matthieu

0

Creo que el Administrador de aplicaciones ejecuta mi aplicación de forma incorrecta. Ejecuta mis aplicaciones en su tarea. Cuando presiono INICIO y presiono el ícono de la aplicación, ejecuto una segunda tarea con mi aplicación.

Lo probé. Hice dos aplicaciones, App1, App2. App2 tiene dos actividades A y B. App1 ejecuta App2 de la manera más sencilla.

Intent intent = new Intent(Intent.ACTION_RUN); 
intent.setComponent(new ComponentName("org.app2.test", "org.app2.test.Screen1")); 

Prueba 1. Ejecutar aplicación1. App1 ejecuta la actividad de App2 A. La actividad A ejecuta la actividad B. Presione Inicio. Presione el ícono de App2. Puede ver la actividad de la App2 A.

Cambié el código para iniciar App2.

Intent intent = new Intent(Intent.ACTION_MAIN, null); 
intent.addCategory(Intent.CATEGORY_LAUNCHER); 
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
intent.setComponent(new ComponentName("org.app2.test", "org.app2.test.Screen1")); 

Prueba 2. Ejecutar aplicación1. App1 ejecuta la actividad de App2 A. La actividad A ejecuta la actividad B. Presione Inicio. Presione el ícono de App2. Puede ver la actividad de la App2 B.

+0

Pregunta conectada http://stackoverflow.com/questions/6649685/how-force-aplication-always-run-in-its-own-task – degratnik

Cuestiones relacionadas