🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
***** **AsyncTask概述** [TOC=6] # 1. 为什么学AsyncTask: AsyncTask与Handler很相似,都是为了不阻塞线程,更新UI只能在主线程中去完成,所以异步处理消息是不可避免的为了降低开发难度,Android提供了AsyncTask。 # 2. 什么是AsyncTask: AsyncTask就是一个封装好的后台任务类,直接继承自Object; 是Android封装好的一个轻量级异步类,用于异步处理消息; 属于一个抽象类,一般使用都是创建一个类继承AsyncTask,重写里面的方法; 实现工作线程 & 主线程(UI线程)之间的通信,即:将工作线程的执行结果传递给主线程,从而在主线程中执行相关的UI操作;保证线程的安全性; # 3. 优点: * 方便实现异步通信 不需使用 “任务线程(如继承Thread类+Handler)的复杂组合 * 节省资源 采用线程池的缓存线程 + 复用线程,避免了频繁创建 & 销毁线程所带来的系统资源开销 # 4. 泛型使用: AsyncTask定义了三种泛型----AsyncTask 整体作用:控制AsyncTask子类执行线程任务时各个阶段的返回类型 具体说明: a. Params: 开始异步任务执行时传入的参数类型,对应excute()中传递的参数----一般是请求的URL地址的数据类型 b. Progress: 异步任务执行过程中,返回下载进度值的类型 c. Result: 异步任务执行完成后,返回的结果类型,与doInBackground()的返回值类型保持一致----执行完 成后返回的数据类型 注意: a. 使用时并不是所有类型都被使用 b. 若未被使用,可用java.lang.Void类型代替 c. 若有不同业务,需额外再写1个AsyncTask的子类