Android: Restauración de la actividad activa, mientras que la reanudación de la aplicación

StackOverflow https://stackoverflow.com/questions/724419

  •  05-09-2019
  •  | 
  •  

Pregunta

Tengo dos actividades que se ejecutan: mainActivity y childActivity . Cada vez que el usuario hace clic en el botón de mainActivity , childActivity se pone en marcha. Lo que quiero hacer es lo siguiente:

Cuando la actividad activo es el childActivity y el usuario hace clic en el botón de inicio y luego relanzar la aplicación , quiero ver el childActivity < strong> en lugar de mainActivity que se puso en marcha.

Yo tenía algunas sugerencias rodeos funcionan realmente. He intentado manipular onStart, onRestart, onResume, onStop, eventos OnDestroy. Sin embargo, ellos no resuelven totalmente el problema. Debe haber una manera inteligente por ahí. Gracias.

Editar:

Gracias por la respuesta, Soonil. El caso se dice que está sucediendo cuando la actividad se llama desde la ventana actividades recientes. (Abrió la ventana cuando lo largo de prensa el botón de inicio) Sin embargo; Esto no está ocurriendo cuando se abre desde la pantalla principal. (Como la apertura de principio) no creo que mi código tiene un problema específico para generar este error. Porque, he creado un proyecto de prueba y trató independiente antes de enviar la pregunta y se enfrentó al mismo problema. De todos modos, aquí está el código de prueba:

public class MainActivity extends Activity implements OnClickListener {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        this.setTitle("MainActivity");

        ((Button) findViewById(R.id.btnChildActivity)).setOnClickListener(this);
    }

    @Override
    public void onClick(View arg0) {
        // TODO Auto-generated method stub
        startActivity(new Intent(this, ChildActivity.class));
    }

}

public class ChildActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main2);
        this.setTitle("ChildActivity");

    }
}
¿Fue útil?

Solución

Editar : Se encuentra la solución a su problema hoy en día un tanto al azar! Ver este informe de errores . En él se explica el problema exactamente. La razón por la que no podía reproducir el problema es que nunca tenga Eclipse lanzar una aplicación directa. Yo uso Eclipse para instalar la aplicación y luego empezar yo mismo.


Esto ya es el comportamiento por defecto para las aplicaciones de Android, no se requieren trucos especiales para lograrlo. Me sorprende que su aplicación no está demostrando este comportamiento. Todas las aplicaciones Android mantiene una pila de actividad, literalmente, una pila LIFO de actividades. Estas actividades se pueden agrupar aún más en las tareas, pero el 99% de las aplicaciones mundanas no siempre necesita saber nada acerca de las tareas de mi experiencia.

Cuando se pulsa el botón de inicio, toda la pila de aplicación se coloca en el fondo. Mientras que en el fondo, puede ser matado por preocupaciones de memoria en cualquier momento, pero si no es el tiempo que transcurre antes de que se restablezca, en general no se mató y no tiene que volver a crear. Al seleccionar de nuevo la aplicación, la pila (o más exactamente, sólo el elemento superior de la pila) se restaura.

Si su aplicación no está exhibiendo este comportamiento, sospecho que tiene algo que ver con cómo se está iniciando el mainActivity y childActivity y cualquier banderas Intención adicionales que pueda estar usando. ¿Hay alguna posibilidad de enviar fragmentos de código de cómo se está iniciando el mainActivity y childActivity?

Otros consejos

Volví y probado con una aplicación similar, e incluso cuando el proceso es forzado a salir de la memoria del ChildActivity se reconstituye automáticamente como dice Soonil. ¿Estás viendo esto en el emulador o en un dispositivo real?

Si ejecuta su aplicación y ver Logcat, debería ver algo como lo siguiente después de iniciar su aplicación, a continuación, abre la ChildActivity y haga clic en Inicio y después de iniciar su actividad de nuevo:

A partir de la actividad: {action = android.intent.action.MAIN categorías = {} = android.intent.categroy.LAUNCHER banderas ... comp = {}} com.yourpackagename.MainActivity Intención Proc iniciar la actividad yourpackagename.ChildActivity: PID = x uid = y GIDS = {} actividad mostrada /.ChildActivity

Podría publicar la salida de Logcat cuando no se ve el comportamiento que espera?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top