2010-07-26 10 views
9

He intentado utilizar este código para iniciar varias actividades de una actividad de padres:Android: ¿es posible iniciar varias instancias de una actividad en la misma tarea?

for (int i=0; i<NUM_ACTIVITIES; i++) 
{ 
    Intent intent = new Intent(this, MyActivity.class); 
    startActivity(intent); 
} 

Sin embargo, de acuerdo a mi registro en MyActivity.onCreate(), a sólo 1 La actividad se crea realmente. ¿Se espera este comportamiento? Si es así, ¿cuál es la forma correcta de lanzar múltiples actividades?

+0

realmente una cuestión interesante. – anticafe

Respuesta

9

No puede tener múltiples actividades en la parte superior al mismo tiempo. ¿Estás tratando de ponerlos en orden, uno después del otro?

Una forma de lograr esto es empezar cada actividad de resultado:

Intent intent = new Intent(this, MyActivity.class); 
startActivityForResult(intent, 0); 

Cuando se utiliza el código de solicitud para realizar un seguimiento cuando la actividad se está ejecutando. Luego, en onActivityResult puede iniciar el siguiente:

protected void onActivityResult (int requestCode, int resultCode, Intent data) { 
    if (requestCode < NUM_ACTIVITIES) { 
    Intent intent = new Intent(this, MyActivity.class); 
    startActivityForResult(intent, requestCode + 1); 
    } 
} 

Editar: Si usted quiere tener algunas de las actividades inmediatamente en el fondo, se les puede encadenar llamando startActivity en onCreate de cada actividad. Si comienza una nueva actividad en onCreate antes de crear vistas, la actividad nunca será visible.

protected void onCreate (Bundle savedInstanceState) { 
    int numLeft = getIntent().getIntExtra("numLeft"); 
    if (numLeft > 0) { 
    Intent intent = new Intent(this, MyActivity.class); 
    intent.putExtra("numLeft", numLeft - 1); 
    startActivity(intent); 
    } 
} 

Esto debe llevar a cabo la pila que quería ..

+0

¿Cuál es la razón por la cual la instancia múltiple de una actividad no puede estar en la parte superior al mismo tiempo? No estoy familiarizado con esta limitación/restricción de Android ... – zer0stimulus

+0

Es posible que desee leer la documentación sobre el ciclo de vida de la actividad: http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle There es una pila de Actividades activas, pero solo la superior es visible (excepto en el caso de los diálogos, pero solo una está activa). No lo consideraría una limitación ... ¿quizás pueda explicar qué comportamiento estaba tratando de lograr iniciando múltiples actividades a la vez? –

+0

esto es más un experimento para verificar mi comprensión de Actividades. Pensé que una nueva instancia de una actividad se inicia por defecto a través de 'startActivity()', y si disparo 3 intents, se crearán 3 nuevos objetos de actividades: 2 en fondo y 1 en primer plano. – zer0stimulus

Cuestiones relacionadas