Olá a todos.Na última vez que falamos sobre um exemplo do mecanismo AsyncTask no Android, desta vez continuamos falando sobre esse exemplo. Fofocando sobre isso, acertando. Vamos conversar Android juntos!
Inspetores, demonstramos como usar o código específico no capítulo anterior AsyncTask
. Nesta rodada, analisamos AsyncTask
o ciclo de vida. Mais especificamente, é o estado de seu tempo de execução. O método de análise é principalmente monitorado por log. , O código específico pode se referir ao conteúdo no tempo anterior, analisamos principalmente o log quando o código está sendo executado, o seguinte é o log específico, consulte:
--------- beginning of main
//程序开始运行,主线程所在的Activity回调onCreate方法,子线程状态为PENDING
I/AsyncEx: onCreate: start Asnyc Task Thread: Thread[main,5,main]
I/AsyncEx: onCreate: before start Asnyc Task States = PENDING
I/AsyncEx: onResume: Status = PENDING
//按下Button启动子线程,子线程状态RUNNING,子线程名称也与主线程不同
D/AsyncEx: onPreExecute: Statue = RUNNING Thread: Thread[main,5,main]
D/AsyncEx: doInBackground: status = RUNNING Thread: Thread[AsyncTask #3,5,main]
D/AsyncEx: onProgressUpdate: Thread: Thread[main,5,main]
D/AsyncEx: onProgressUpdate: process = 0 status = RUNNING
D/AsyncEx: onProgressUpdate: Thread: Thread[main,5,main]
D/AsyncEx: onProgressUpdate: process = 1 status = RUNNING
D/AsyncEx: onProgressUpdate: Thread: Thread[main,5,main]
D/AsyncEx: onProgressUpdate: process = 2 status = RUNNING
D/AsyncEx: onProgressUpdate: Thread: Thread[main,5,main]
D/AsyncEx: onProgressUpdate: process = 49 status = RUNNING
D/AsyncEx: onPostExecute: res = true status = RUNNING Thread: Thread[main,5,main]
//子线程运行完成,状态变为FINISHED,按下Backup键退出程序并且销毁子线程
I/AsyncEx: onPause: status = FINISHED
I/AsyncEx: onDestroy: task is not canceled
I/AsyncEx: onDestroy: task state: FINISHED
Você pode ver no log que o processo do tempo de execução do AsyncTask é principalmente dividido em três estados:
- PENDENTE
- CORRIDA
- ACABADO.
É execute
o PENDING
estado antes de chamar o sub-encadeamento inicial, e é o estado após a execução da chamada até o onPostExecute
final RUNNING
, e onPostExecute
muda para o FINISHED
estado após a conclusão da chamada .
Inspetores, você pode ver claramente o status do AsyncTask rastreando o log e entender melhor o processo de execução do encadeamento filho. No entanto, você não precisa prestar muita atenção a esses estados. Afinal, é assíncrono. O foco de nossa introdução ao estado é ajudá-lo a entender seu processo de operação. Espero que você não o vire de cabeça para baixo.
No final, algumas autoridades disseram que analisamos seu código-fonte ao introduzir o mecanismo Handler.Nós também devemos analisar o código-fonte do AsnycTask? Sim, mas não agora.Uma é que o código fonte do AsyncTask está mudando constantemente, e a outra é que requer conhecimento relacionado à multithreading em Java. Começaremos a analisar seu código fonte depois de prepará-lo. Aguarde pacientemente.
Veja, apresentaremos o exemplo do mecanismo AsnycTask no Android aqui, se você quiser saber quais exemplos estão por trás e ouvir a próxima decomposição!