2010-08-15 15 views
7

Tengo una actividad. En esta actividad, quiero comenzar otra actividad usando startActivityForResult(). Entiendo que mi actividad básica se inicia dentro de un proceso con un hilo principal de GUI. Pero según tengo entendido, startActivityForResult() es asincrónico, lo que significa que mi nueva actividad se ejecutará en un hilo diferente. No puedo encontrar información sobre los hilos dentro. Si solo hay un hilo de GUI, ¿cómo funcionan estas funciones de manera asincrónica?¿Cuál es el mecanismo detrás de startActivityForResult() en Android?

Respuesta

5

Pero por lo que yo entiendo, startActivityForResult() es asynchronious lo que significa que mi nueva actividad se ejecutará en un hilo diferente.

startActivityForResult() es asincrónico. Eso no significa que su nueva actividad se ejecutará en un hilo diferente. Si la nueva actividad es parte de su propia aplicación, se ejecuta en el hilo principal de la aplicación, como todas sus otras actividades.

Si solo hay un hilo de la GUI, ¿cómo funcionan estas funciones de manera asincrónica?

startActivityForResult(), como startActivity(), no hace nada inmediatamente. Más bien, pone un mensaje en una cola de mensajes, luego regresa. Cuando devuelve el control a Android (por ejemplo, finaliza su método onClick()), Android vuelve a procesar mensajes fuera de esa cola. Cuando llega a su mensaje de actividad de inicio, inicia la nueva actividad.

0

pase la información que desee en forma de extras en su intención.

Intent i = new Intent(getApplicationContext(), YourClass.class); 
i.putExtra("EXTRA_INFO", <your info here>); 
startActivityForResult(i); 

Y en su nueva actividad

protected void onCreate(Bundle savedInstanceState) { 
     if(getIntent().hasExtra("EXTRA_INFO"){ 
     mString = getIntent().getStringExtra("EXTRA_INFO"); 
     } 
} 
Cuestiones relacionadas