【Android 开发】: AsyncTask 详解

  在Androidy应用开发中,整个架构的性能好坏很大一部分都体现在线程的操作中,所以这是Android开发中是一块很重要的内容,对于线程,多线程这一部分的基础内容,我们可以参考本博客前期中Java多线程的内容:JavaSE第九十七讲:线程与进程 在这一讲中我们主要学习Android中关于AsyncTask的学习以及相关Demo的实现。

一. 使用 AsyncTask 目的

  官网位置:Android ---> API Guides ---> Processes and Threads --->  Using AsyncTask

  异步任务允许你在用户接口上执行异步工作。它会在自己的工作线程上执行可能阻塞的操作然后将结果推送到UI主线程,而不会让你自己去处理线程的操作。(在Android3.0以上的版本中,为了使得Android UI能够更加流畅,它不允许用户在UI的主线程中访问网络,所以会强制用户开辟一个子线程,在这个线程中完成下载耗时的操作(比如从网络中下载一张图片),此时UI的主线程与下载的子线程是存在一个异步的过程,一旦子线程中下载图片完成,就要把结果推送到UI上.)
  使用方法:继承AsyncTask类,实现 doInBackground() 回调接口,这样就运行在后台的线程池中,如果你想更新你的UI,你可以实现onPostExecute()放,它可以讲doInBackground()方法中的结果运行在 UI主线程中,所以你可以安全的更新你的UI.你可以在UI主线程中通过execute()方法来执行你的异步任务。
  如下代码片段:


二. AsyncTask 介绍

  AsyncTask其实就是一个线程操作的框架,它也是android围绕这 Thread 和 Handler来设计的。它可以直接的被一些短时间的操作使用(通常是几秒),如果你想要保持线程运行很长时间,强烈建议你使用java.util.concurrent包下的Executor, ThreadPoolExecutor 和 FutureTask 这些类来实现.
  一个异步任务是在跑在后台线程中进行计算然后把结果推送到UI主线程中的。它是由三个泛型类型和四个回调方法来实现的。

1 三个泛型类型

1)Params: 启动任务执行的输入参数,比如HTTP请求的URL。
2) Progress: 后台任务执行的百分比会发布到UI主线程中。
3) Result: 后台执行任务最终返回的结果,比如String,Integer等

【注意】如果三个泛型都没有类型,我们就用void代替,如下所所示(注意类型是Void是大写的)

 private class MyTask extends AsyncTask<Void, Void, Void> {}

2 四个回调方法

1)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值