Vamos falar juntos sobre o Android (186ª rodada: mecanismo AsyncTask 5 do Android)

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 AsyncTasko 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.

É executeo PENDINGestado antes de chamar o sub-encadeamento inicial, e é o estado após a execução da chamada até o onPostExecutefinal RUNNING, e onPostExecutemuda para o FINISHEDestado 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!

Publicado 538 artigos originais · Gostei 132 · Visitantes 630.000+

Acho que você gosta

Origin blog.csdn.net/talk_8/article/details/105623007
Recomendado
Clasificación