2012-01-06 22 views
12

¿Alguien puede ayudarme a comprender sincrónico y asincrónico actividades en Android?Actividades síncronas y asincrónicas

¿Qué se entiende exactamente por actividad síncrona y asíncrona en Android?

StartActivity, StartSubActivity y StartAcivityForResult inician una actividad de forma síncrona o asincrónica, ¿o pueden comportarse de ambas maneras?

Explique que he revisado muchos artículos pero no he podido encontrar ninguna explicación adecuada sobre esto.

+0

@ pregunta Dinesh..Your es igual que [link] http: // stackoverflow .com/questions/8613295/difference-between-synchronous-activities-ans-asynchronous-activities [link] y también ha respondido en esta publicación. Entonces, ¿por qué hace la misma pregunta? Además, AFAIK startSubActivity nunca se lanza en público y su funcionalidad es proporcionada por startActivityForResult() – Maverick

+0

Gracias Ravi por el comentario. Respondí esa pregunta, pero todavía estoy un poco confundido sobre este concepto. Entonces quiero ser 100% claro. Si tiene alguna idea sobre esto que puede compartir conmigo ... :) –

+1

"¿Alguien me puede ayudar a explicar la actividad síncrona y asincrónica en Android?" - no existe tal concepto en Android. – CommonsWare

Respuesta

17

En primer lugar, solo se puede ejecutar una actividad a la vez en Android, por lo que nunca tendrá dos actividades ejecutándose al mismo tiempo. Use startActivity() cuando desee "disparar y olvidar", es decir, desea iniciar una actividad pero no espera que devuelva un valor a su actividad. En ese caso, la nueva actividad comenzará y su actividad estará en pausa; eventualmente puede recuperar el control una vez que el usuario regrese a su actividad.

Usa startActivityForResult() cuando esperas un resultado de la actividad que estás iniciando. En este caso, la actividad de llamada debe anular onActivityResult(), que se invocará cuando la actividad iniciada salga y tenga un resultado que devolverle (que establece con setResult()).

En ambos casos, ya que la actividad de llamadas y la llamada actividad están en la misma tarea, es "sincrónica" en cierto sentido (aunque creo que el uso de los términos "sincrónica" y "asíncrono" puede ser confuso en este contexto). La actividad de llamada no aparecerá en la pantalla hasta que finalice la actividad llamada.

Una lectura útil saber más es: * http://developer.android.com/guide/topics/fundamentals/tasks-and-back-stack.html

- Bruno Oliveira (relaciones con los desarrolladores de Android, Google)

+1

Gracias Bruno por una respuesta rápida. Pero puedo explicarme en qué sentido se usan los términos "sincrónico" y "asincrónico", como he visto en muchos lugares, surge este tipo de pregunta ... –

+3

Sincrónico significa que la ejecución no continuará hasta que se termine una determinada tarea . Si 'startActivity' funciona de esta manera, toda la interfaz se congelaría hasta que se ejecute la otra actividad.Asíncrono significa que su tarea tendrá lugar en algún lugar en el futuro, y la ejecución continúa mientras tanto: solicita que se inicie una Actividad, y su código continúa ejecutándose sabiendo que eventualmente sucederá. – slezica

+1

La respuesta no es abordar la pregunta correctamente. –

Cuestiones relacionadas