Android学习之——AsyncTask(一)

     直接正题~~~
AsyncTask的使用方法:
  1.   必须子类化AsyncTask(外部类实现AsyncTask或者匿名内部类)
  2.   AsyncTask的实例只能执行异常(再次启动必须重新实例化)
  3.   启动任务必须在主线程中执行

//自定义外部类实现AsyncTask各个方法介绍
/**
 * 关于AsyncTask当中三个泛型参数的使用:
 * 		1、Params:执行任务时传入的参数,多半情况下使用String类型作为参数,用于传入url地址
 * 					同时也是doInBackground()方法时的传入参数
 * 		2、Progress:在后台发布进度时使用的参数,调用publishProgress(Progress),同时也是
 * 					onProgressUpdate()方法的传入参数
 * 		3、Result:doInBackground()方法的返回值,同时也是onPostExecute()方法的传入参数
 * @author csx
 *
 */
public class MyTask extends AsyncTask<Void, Void, Void> {

	/**
	 * 在doInbackground()方法执行之前执行
	 * 当Task启动,首先执行该方法,该方法执行完毕立即调用doInBackground()方法
	 */
	@Override
	protected void onPreExecute() {
		// TODO Auto-generated method stub
		super.onPreExecute();
		
		Log.v("MyTask", "onPreExecute");
	}
	
	/**
	 * 该方法在onPreExecute()方法执行之后执行---=-后台(辅线程)
	 */
	@Override
	protected Void doInBackground(Void... params) {//多参(数组)
		
		//该方法在后台执行,主要用于发布进度,该方法被调用,键onProgressUpdate()方法被回调,否则将不会回调onProgressUpdate()方法
		publishProgress();//手动调用
		Log.v("MyTask", "doInBackground");
		return null;
	}
	
	/**
	 * 该方法只有在publishProgress()方法被调用之后,被系统调用 UI --Thread
	 */
	@Override
	protected void onProgressUpdate(Void... values) {
		// TODO Auto-generated method stub
		super.onProgressUpdate(values);
		Log.v("MyTask", "onProgressUpdate");
	}

	/**
	 * 该方法在doInBackground()方法执行完毕后调用
	 */
	@Override
	protected void onPostExecute(Void result) {
		// TODO Auto-generated method stub
		super.onPostExecute(result);
		Log.v("MyTask", "onPostExecute");
	}
}
实例化
//实例化
MyTask tsak = new MyTask();

//执行
task.execute();

Log打印如下图:
如图可看到log的打印情况,从而清楚各个方法的调用顺序。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值