一起Talk Android吧(第一百八十六回:Android中的AsyncTask机制五)

本文深入探讨了Android中AsyncTask的生命周期及其运行时的状态变化,通过日志跟踪的方式详细解析了Pending、Running和Finished三种状态,帮助读者更好地理解子线程的运行流程。

各位看官们大家好,上一回中咱们说的是Android中AsyncTask机制的例子,这一回咱们继续说该例子。闲话休提,言归正转。让我们一起Talk Android吧!

看官们,我们在前面章回中通过具体的代码演示了如何使用AsyncTask,这一回中我们分析一下AsyncTask的生命周期,更加准确的说是它运行时的状态,分析的方法主要是通过log来跟踪,具体的代码可以参考上一回中的内容,我们主要分析一下代码运行时的log,下面是具体的log,请大家参考:

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

从log中可以看到AsyncTask运行时的过程主要分为三个状态:

  • PENDING
  • RUNNING
  • FINISHED.

在调用execute启动子线程前为PENDING状态,调用execute后一直到onPostExecute结束前都是RUNNING状态,onPostExecute调用结束后转变为FINISHED状态。

看官们,通过跟踪log可以清楚地看到AsyncTask的状态,进而可以更好地理解子线程的运行过程。不过大家不需要过多地关注这些状态,毕竟它是异步的,我们介绍它的状态侧重点还在于帮助大家理解它的运行过程,希望大家不要本末倒置。

最后有看官说,我们在介绍Handler机制时分析了它的源代码,是不是也要分析一下AsnycTask的源代码呢?是的,不过不是现在,一则是AsyncTask的源代码经常在变化,再则是它需要Java中多线程相关的知识做铺垫,等我们把铺垫打好后就开始分析它的源代码,请大家耐心等待。

各位看官,关于Android中AsnycTask机制的例子咱们就介绍到这里,欲知后面还有什么例子,且听下回分解!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

talk_8

真诚赞赏,手有余香

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值