AsyncTask的简单使用

Android的UI操作不是线程安全的,所以一些好事操作要放在子线程中去执行。今天我们来了解下AsyncTask。

为什么要使用AsyncTask?

1、我们不需要自己创建子线程,AsyncTask内部已经封装好了一个线程池去执行耗时操作。

2、不需要自己写相应的方法去更新UI界面

3、AsyncTask已经包含了所有子线程和UI线程处理的操作。

如何使用AsyncTask

1、创建子类继承AsyncTask

/**
	 * 继承AsyncTask是需要指定3个泛型
	 * 第一个泛型: 执行AsyncTask传入的参数类型execute(参数), 还是doInBackground得入参类型
	 * 第二个泛型: 想用户提示任务进度的使用的参数类型,可以使用Void说明不传任何类型
	 * 第三个泛型: doInBackground的返回值类型,onPostExecute的入参类型
	 *
	 */
	class MyTask extends AsyncTask<String, Void, String>{

2、复写AsyncTask的抽象方法,完成耗时操作并在主线程中刷新UI

/**
		 * 当调用AsyncTask.execute方法只后此方法立即被调用
		 * 在主线程中执行,做一些准备工作
		 */
		@Override
		protected void onPreExecute() {
			super.onPreExecute();
/**
		 * 在子线程中执行耗时操作
		 * 入参是第一个泛型类型
		 * 返回值类型是第三个泛型类型
		 */
		@Override
		protected String doInBackground(String... params) {
/**
		 * 当doInBackground执行完之后立即执行
		 * 在主线程中执行
		 * 入参是doInBackground的返回值
		 */
		@Override
		protected void onPostExecute(String result) {
			super.onPostExecute(result);

3、调用AsyncTask.execute( )方法执行异步任务

MyTask task = new MyTask();
	task.execute("aaa");

下面介绍下AsyncTask执行周期中的一些方法

onPreExecute:是第一个被调用的方法,在UI线程中执行,主要做一些后台任务启动前的准备工作,比如show出一个Progress

doInBackground:第二个别调用的方法,在子线程中执行,处理耗时操作,并将结果返回给onPostExecute,该方法由系统调用,不需要人为调用,入参就是AsyncTask第一个泛型参数所指的类型,返回值是第三个泛型参数所指的类型。

publishProgress():参数类型是AsyncTask第二个泛型参数所指的类型,此方法在doInBackground中调用,并每当调用一次此方法,onProgressUpdate就会被调用

onProgressUpdate:第三个被调用的方法,需要在doInBackground中调用publishProgress()才会被调用,入参就是AsyncTask第二个泛型参数所指的类型,就是publishProgress的传入参数类型。

onPostExecute:第四个被调用的方法,在UI线程中执行,入参就是doInBackground返回值

我们在用AsyncTask下载资源的步骤大致为:

1、创建子类继承AsyncTask

2、复写AsyncTask的抽象方法,完成耗时操作并在主线程中刷新UI

3、调用AsyncTask.execute()方法执行异步任务

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值