android 异步任务详解 AsynTask

起飞_苗苗 贡献于2012-11-22

作者 jyyr  创建于2012-11-05 09:19:00   修改者jyyr  修改于2012-11-05 12:58:00字数3579

文档摘要:android提供了一套专门用于异步处理的类。即:AynsTask类。使用这个类可以为耗时程序开辟一个新线程进行处理,处理完时返回。其实,AsynTask类就是对Thread类的一个封装,并且加入了一些新的方法。编程时,两者都可以实现同样的功能。本文后面将对AsynTask和Thread进行比较。
关键词:

android异步任务详解 AsynTask android提供了一套专门用于异步处理的类。即:AynsTask类。使用这个类可以为耗时程序开辟一个新线程进行处理,处理完时返回。 其实,AsynTask类就是对Thread类的一个封装,并且加入了一些新的方法。编程时,两者都可以实现同样的功能。本文后面将对AsynTask和Thread进行比较。 1、AsynTask类结构 asysTask类主要用到的几个内部回调函数有: doInBackGround() onPreExecute() onPostExecute() onProgressUpdate() 正是这几个回调函数构成了AsynTask类的使用逻辑结构。 注意:每个AsynTask子类必须至少复写doInBackGround()方法。 2、回调逻辑关系 调用关系如下图:       1> 主线程调用AsynTask子类实例的execute()方法后,首先会调用onPreExecute()方法。onPreExecute()在主线程中运行,可以用来写一些开始提示代码。 2> 之后启动新线程,调用doInBackground()方法,进行异步数据处理。 3> 处理完毕之后异步线程结束,在主线程中调用onPostExecute()方法。onPostExecute()可以进行一些结束提示处理。 补充:在doInBackground()方法异步处理的时候,如果希望通知主线程一些数据(如:处理进度)。这时,可以调用publishProgress()方法。这时,主线程会调用AsynTask子类的onProgressUpdate()方法进行处理。 3、各个函数间数据的传递 通过上面的调用关系,我们就可以大概看出一些数据传递关系。如下: execute()向doInBackground()传递。 doInBackground()的返回值会传递给onPostExecute()。 publishProgress()向progressUpdate()传递。 要点:为了调用关系明确及安全,AsynTask类在继承时要传入3个泛型。第一个泛型对应execute()向doInBackground()的传递类型。第二个泛型对应doInBackground()的返回类型和传递给onPostExecute()的类型。第三个泛型对应publishProgress()向progressUpdate()传递的类型。 传递的数据都是对应类型的数组,数组都是可变长的哦。可以根据具体情况使用。 4、实例: 看了上面的内容,应该对asynTask类的使用逻辑有了了解。下面写一个简单的例子。 例子功能很简单:activity中有1个textView和botton。当点击botton时,异步改变textView的值,并且在相应的回调函数执行时,用System.out.println()输出值。 布局:

下载文档到电脑,查找使用更方便

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 6 金币 [ 分享文档获得金币 ] 1 人已下载

下载文档