代码改变世界

android-AsynTask

2013-04-12 00:16  java20130722  阅读(207)  评论(0编辑  收藏  举报

AsynTask

AsyncTask的特点是任务在主线程之外运行,而回调方法是在主线程中执行, 这就有效地避免了使用Handler带来的麻烦。AsyncTask是使用java.util.concurrent 框架来管理线程以及任务的执行的,concurrent框架是一个非常成熟,高效的框架,经过了严格的测试

当应用中会有网络请求,并且需要把结果信息更新到UI上, 那么可以选择AsynTask.


下面举个简单实例,说明AsynTask 里面的每个方法的使用,和具体的调用过程;

package com.hualu.asyntaskexample;

import java.net.URL;

import android.os.AsyncTask;

public class DemoAsynTask extends AsyncTask<URL, Integer, String> {

	@Override
	protected String doInBackground(URL... params) {
		System.out.println(params[0].getPath()); //传来的URL
		publishProgress(1) ;
		return null;
	}
	
	@Override
	protected void onProgressUpdate(Integer... values) {
		super.onProgressUpdate(values);
		
	}
	
	@Override
	protected void onPostExecute(String result) {
		super.onPostExecute(result);
		
	}

}

详解:

 AsyncTask<URL, Integer, String>

泛型中的三个类型:

       第一个URL:是doInBackground()方法中的参数(可变参数)

      第二个Integer:是在调用publishProcess(int)时,参数传入到onProcessUpdate()里面

      第三个String:是doInBackground()方法返回值,这个返回值会当做参数传递给onPostExecute()方法


       doInBackground() 方法在上述三个方法中是第一个调用的,要想程序调用onProcessUpdate()方法,需要调用publishProcess()方法,doInBackground()返回后,onPostExecute()方法才会执行。


一般网络操作在doInBackground()方法中实现。


运行AsynTask:

new AsynTask().execute(new URL("http://blog.csdn.net/luhuajcdd/article/details/8791105")) ;