最近项目中用到异步任务功能,网上搜罗了下资料,奈何国内的质量实在太低,依靠伟大的谷歌搜到很多国外的文章,写的非常的好,更好的在于没有copy paste的成分. 本文内容转自:http://www.brighthub.com/mobile/google-android/articles/82805.aspx 英语好的朋友请直接阅读原文.小弟不才,做个苦力当翻译

介绍

我们的Android应用越来越复杂,连接服务端,和web交互数据,存储大文件在android数据库中的同时显示进度条或者在通知栏显示通知. 我们如何能在抛开UI线程的情况下,边接受处理数据边用进度条展示呢?开始之前,必须知道什么是"UI线程"? 如果你熟悉"Thread"的概念. 那么你应该很容易明白异步任务. Android应用在处理的时候只有一个main主线程在运行.这个看上去像在任何地方只有一个任务. 如果你只有一个UI线程在工作,你就不能做一些复杂的事情,比如同时存储10000条记录,这个时候应用会停住,直到1000条记录存储完毕. 这不是一个好的方式. 在android你可以在一个应用里,同一时间运行多个线程. 举例:一个后台任务可以从服务端接受数据并且存储到本地数据库中. 如何对"Thread"概念有足够的了解,那么我们继续 现在我们可以开始了吗? 开始在后台执行任务? 这里我们还有几步工作要做. 一个古老的路线方法是使用Thread线程类,使用Handlers 和Runnables. 但是我们有更好的方式。使用AsyncTask 类
AsyncTask 类
让我来看看AsyncTask类的结构 private class myBrightHubTask extends AsyncTask protected void onPreExecute(){ } 这个方式是在执行新线程前运行. 这里没有输入和输出的参数,所以这个可以初始化一些你认为必要的参数. protected Z doInBackground(X...x){ } 这是个非常重要的方法. 你可以在这里定义你需要的在后台执行的方法.这里开始是一个独立

......