Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Integrantes :
Girio Diaz Yefri A.
Rosales Huertas Jos M.
temas cubiertos
Thread :: concurrencia
Handler :: mensajes entre
threads
AsyncTask :: tareas en
background
Threads o hilos
UN HILO O SUB PROCESO ES LA UNIDAD DE
PROCESAMIENTO MAS PEQUEAS QUE PUEDE
SE PLANIFICADA EN UN SISTEMA OPERATIVO
PERMITE A UNA APLICACIN REALIZADA
VARIAS TAREAS A LA VEZ , ES DECIR , DE
FORMA CONCURRENTE
Cada vez que se lanza una nueva aplicacin en Android el sistema crea un
nuevo proceso Linux para ella y la ejecuta en su propia mquina virtual Dalvik
(Por supuesto si est programada en Java, si lo estuviera en cdigo nativo no
hara falta la mquina virtual). Trabajar en procesos diferentes nos garantiza
que desde una aplicacin no se pueda acceder a la memoria (cdigo o
variables) de otras aplicaciones. Como se ver en un prximo captulo esta
caracterstica se hereda directamente del sistema operativo Linux.
Theards
tenemos todo lo de java de tareas
una aplicacin Android
1 Activity -> 1 Thread encargada de la UI
captura de eventos: clics
refresco de la pantalla
las dems tareas no deben bloquear la UI para
mantener la agilidad de respuesta
solucin:
1. mandar el trabajo pesado a otras threads
2. devolver los resultados a UI para que los
presente
android se autodefiende
si una aplicacin no
responde en la thread
principal (UI) android se
queja
en 5s!
hay que sacar de la UI todo
lo que consume tiempo
tareas largas
tareas que dependen de la
red, ficheros,
Theards
las threads
se crean con start()
las threads terminan cuando
acaba run()
una thread terminada no se
puede volver a
arrancar
patrones
threads auxiliares
Handler
Mecanismo de comunicacin entre tareas
unidireccional
hay tareas que envan
y una tarea recibe
podemos mandar
mensajes
la tarea receptora ya sabr qu hacer
el mensaje se procesa en la thread
receptora cdigo ejecutable
para que lo ejecute la receptora
el cdigo se ejecuta en la thread receptora
Handler en la thread UI
podemos mandar
mensajes
la tarea receptora ya sabr qu hacer
el mensaje se procesa en la thread UI
cdigo ejecutable
para que lo ejecute la receptora
el cdigo se ejecuta en la thread UI
aunque la UI no sea thread-safe
ahora todo el cdigo se ejecuta en 1 tarea
y
no hay problemas de sincronizacin
envo de mensajes
envo de mensajes
recepcin de mensajes
Message
Es un recipiente para llevar objetos
no olvide que la RAM es la misma para
todas las
tareas: slo enviamos referencias
AsyncTask
AsyncTask - mtodos
class MyClass extends AsyncTask
<Params,Progress,Result>{
se ejecutan en la UI
void onPreExecute()
inicializacin
void
onProgressUpdate(Progress )
void onPostExecute(Result)
se ejecutan en la thread
Result doInBackground(Params
)
similar al run()
llama publishProgress(Progress
AsyncTask - reglas
los objetos deben crearse en la
UI
execute() se llama en la UI
ejecutando doInBackground en
la otra thread
no se debe llamar
manualmente a los mtodos de
la asynctask
una asynctask slo puede
ejecutarse 1 vez
Ejemplo de trabajar
en el hilo secundario
CARACTERISTICAS
Ejecucin de tareas en paralelo o de manera concurrente.
Los hilos de ejecucin comparten el espacio de memoria.
El conjunto de hilos en ejecucin que comparten los mismos
recursos es conocido como un proceso.
Cualquier modificacin de un dato en memoria, por parte de
un hilo, permite el acceso al dato modificado para el resto de
hilos de manera inmediata.
Cada hilo presenta de manera propia el contador de
programa, la pila de ejecucin y el estado de la CPU.
Un proceso seguir en ejecucin si al menos uno de sus hilos
de ejecucin sigue activo. Si un proceso finaliza, todos sus
hilos de ejecucin tambin lo harn.