Android AsyncTask详解及使用方法

发布时间 - 2026-01-11 01:01:08    点击率:

 Android AsyncTask详解及使用方法

 简介:

   AsyncTask就是一个封装过的后台任务类,顾名思义就是异步任务。

   AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(可以通过接口实现UI进度更新),最后反馈执行的结果给UI主线程.

  一、如果想自定义一个AsyncTask,可以写一个类,继承AsyncTask。

  eg: 、    

    //第一个参数为doInBackground中传入的类型,第二个为doInBackground中更新的参数的类型,第三个为doInBackground完成后传出的参数。

  class MyAsyncTask extends AsyncTask<String, Integer, String> { . . .}

    注意有一个方法必须实现,就是

protected String doInBackground(String... params) { . . . }

  一般来说,如果自定义的AsyncTask只针对一个Activity使用的话(跟Adapter差不多),那么推荐使用匿名内部类。

  如果是在不同的类都需要调用的话,那么要把自定义的AsyncTask写在一个新类里面,并且需要在定义的AsyncTask中写一个完成的回调。

  二、使用方法:

  MyAsyncTask myAsyncTask = new MyAsyncTask();
  //参数即为doInBackground中传入的参数。
  myAsyncTask.execute(“Hello”);

  三、停止正在执行的task的方法:

    可以参考此目录下的 “AsyncTask各方法调用示例及详解” 

  四、必看详解:

   要使用AsyncTask工作我们要提供三个泛型参数,并重载几个方法(至少重载一个)。 

   AsyncTask定义了三种泛型类型 Params,Progress和Result:
    Params 启动任务执行的输入参数,比如HTTP请求的URL。
    Progress 后台任务执行的百分比。
    Result 后台执行任务最终返回的结果,比如String。

   使用过AsyncTask 的同学都知道一个异步加载数据最少要重写以下这两个方法:

doInBackground(Params…) 后台执行,比较耗时的操作都可以放在这里。注意这里不能直接操作UI。此方法在后台线程执行,完成任务的主要工作,通常需要较长的时间。在执行过程中可以调用public publishProgress(Progress…)来更新任务的进度。
onPostExecute(Result)  相当于Handler 处理UI的方式,在这里面可以使用在doInBackground 得到的结果处理操作UI。 此方法在主线程执行,任务执行的结果作为此方法的参数返回

   有必要的话你还得重写以下这三个方法,但不是必须的:

onProgressUpdate(Progress. . .)   在publishProgress方法被调用后,可以使用进度条增加用户体验度。 此方法在主线程执行,用于显示任务执行的进度。

onPreExecute()        这里是最终用户调用Excute时的接口,当任务执行之前开始调用此方法,可以在这里显示进度对话框。
onCancelled()             用户调用取消时,要做的操作

   使用AsyncTask类,以下是几条必须遵守的准则:

    1.Task的实例必须在UI thread中创建;
    2.execute方法必须在UI thread中调用;
    3.不要手动的调用onPreExecute(), onPostExecute(Result),doInBackground(Params...),onProgressUpdate(Progress...)这几个方法;
    4.该task只能被执行一次,否则多次调用时将会出现异常;

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# Android  # AsyncTask  # AsyncTask详解  # AsyncTask使用方法  # Android 使用AsyncTask实现多线程断点续传  # Android 使用AsyncTask实现断点续传  # Android 使用AsyncTask实现多任务多线程断点续传下载  # 详解Android 中AsyncTask 的使用  # Android多线程AsyncTask详解  # Android中使用AsyncTask实现下载文件动态更新进度条功能  # Android AsyncTask实现异步处理任务的方法详解  # Android带进度条的下载图片示例(AsyncTask异步任务)  # 浅谈Android中AsyncTask的工作原理  # 自定义  # 重写  # 可以使用  # 几个  # 是在  # 在这里  # 放在  # 第一个  # 在这  # 推荐使用  # 要把  # 这两个  # 可以通过  # 希望能  # 要做  # 第二个  # 三种  # 可以直接  # 还得  # 有必要 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?  今日头条微视频如何找选题 今日头条微视频找选题技巧【指南】  Python制作简易注册登录系统  Laravel如何实现数据库事务?(DB Facade示例)  如何自定义safari浏览器工具栏?个性化设置safari浏览器界面教程【技巧】  Laravel事件监听器怎么写_Laravel Event和Listener使用教程  php 三元运算符实例详细介绍  Swift中switch语句区间和元组模式匹配  如何用wdcp快速搭建高效网站?  Laravel如何理解并使用服务容器(Service Container)_Laravel依赖注入与容器绑定说明  在Oracle关闭情况下如何修改spfile的参数  如何在IIS中新建站点并解决端口绑定冲突?  Laravel如何构建RESTful API_Laravel标准化API接口开发指南  Android使用GridView实现日历的简单功能  制作电商网页,电商供应链怎么做?  怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  Laravel如何配置中间件Middleware_Laravel自定义中间件拦截请求与权限校验【步骤】  西安专业网站制作公司有哪些,陕西省建行官方网站?  在线教育网站制作平台,山西立德教育官网?  浅述节点的创建及常见功能的实现  Midjourney怎样加参数调细节_Midjourney参数调整技巧【指南】  香港服务器租用费用高吗?如何避免常见误区?  Angular 表单中正确绑定输入值以确保提交与验证正常工作  头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?  中山网站推广排名,中山信息港登录入口?  Laravel怎么多语言本地化设置_Laravel语言包翻译与Locale动态切换【手册】  为什么php本地部署后css不生效_静态资源加载失败修复技巧【技巧】  如何快速生成高效建站系统源代码?  Laravel如何配置任务调度?(Cron Job示例)  高端建站三要素:定制模板、企业官网与响应式设计优化  PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)  php打包exe后无法访问网络共享_共享权限设置方法【教程】  Android实现代码画虚线边框背景效果  如何实现建站之星域名转发设置?  弹幕视频网站制作教程下载,弹幕视频网站是什么意思?  Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】  Java遍历集合的三种方式  JS中页面与页面之间超链接跳转中文乱码问题的解决办法  Laravel怎么在Blade中安全地输出原始HTML内容  Python高阶函数应用_函数作为参数说明【指导】  如何确保FTP站点访问权限与数据传输安全?  Laravel如何使用Scope本地作用域_Laravel模型常用查询逻辑封装技巧【手册】  HTML透明颜色代码怎么让图片透明_给img元素加透明色的技巧【方法】  北京网站制作公司哪家好一点,北京租房网站有哪些?  laravel怎么配置和使用PHP-FPM来优化性能_laravel PHP-FPM配置与性能优化方法  如何用5美元大硬盘VPS安全高效搭建个人网站?  Laravel请求验证怎么写_Laravel Validator自定义表单验证规则教程  网站制作价目表怎么做,珍爱网婚介费用多少?  Win11摄像头无法使用怎么办_Win11相机隐私权限开启教程【详解】