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")) ;