在Android当中,提供了两种方式来解决线程直接的通信问题,一种是通过Handler的机制,还有一种就是今天要详细讲解的 AsyncTask 机制。
AsyncTask
AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(可以通过接口实现UI进度更新),最后反馈执行的结果给UI主线程.
怎么来理解AsyncTask呢?通俗一点来说,AsyncTask就相当于Android给我们提供了一个多线程编程的一个框架,其介于Thread和Handler之间,我们如果要定义一个AsyncTask,就需要定义一个类来继承AsyncTask这个抽象类,并实现其唯一的一个 doInBackgroud 抽象方法。
3个泛型参数:
AsyncTask <Params, Progress, Result>
如果都不指定的话,则都将其写成Void,例如:
AsyncTask <Void, Void, Void>
代码
public class yibu extends AsyncTask<Integer, Integer, String> { private int num = 0; private TextView text; public yibu(TextView textfrom) { // TODO 自动生成的构造函数存根 this.text = textfrom;//传递进来一个TextView } @Override protected void onPostExecute(String result) { // TODO 自动生成的方法存根 super.onPostExecute(result); text.setText("异步操作执行结束" + result); } @Override protected void onPreExecute() { // TODO 自动生成的方法存根 super.onPreExecute(); text.setText("开始执行异步操作"); } @Override protected void onProgressUpdate(Integer... values) { // TODO 自动生成的方法存根 super.onProgressUpdate(values); int value = values[0]; System.out.println(value); } @Override protected String doInBackground(Integer... param) { // TODO 自动生成的方法存根 for(;num<10;num++) { publishProgress(num);//调用onProgressUpdate() } return num + param[0].intValue() + "";//调用onPostExecute,值直接传进去 } }
源代码
代码:http://pan.baidu.com/s/1dD1Qx01
Second.zip
com.yuyidong.second.yibu.java
还有一个例子,
yibu.zip
转载请注明出处:http://www.cnblogs.com/yydcdut/p/3707960.html
Android -- AsyncTask,布布扣,bubuko.com
原文:http://www.cnblogs.com/yydcdut/p/3707960.html