AsyncTask 异步任务解析

2024-09-08 11:58
文章标签 解析 异步 任务 asynctask

本文主要是介绍AsyncTask 异步任务解析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1:构建AsyncTask 子类的回调方法:
A:doInBackground:   必须重写,所有的耗时操作都在这个里面进行;
B: onPreExecute:     用户操作数据前的调用; 例如:显示一个进度条 等 ;
C: onPostExecute:    当doInBackground 执行完成后;会自动把数据传给onPostExecute方法;也就是说:这个方法是处理返回的数据的方法;(在这个方法中对 获取的数据进行UI上的处理。);

D: onProgressUpdate: 显示的网络获取数据的进度;(Progress);

API 中说明:

AsyncTask<Params,Progress,Result>

对AsyncTask中的参数进行说明: 里面有三个参数;


AsyncTask<Params,Progress,Result> 对AsyncTask中的参数进行说明: 里面有三个参数;

Params:

是通过 exexute 所带入的参数;可以是一个str字符串;也可以是一个str[]字符集合,也可以是一个Url 或者Url[] 集合;具体要看情况;案例中用的是一个str字符串(urls)的形式;


 Progress:

是一個获取网络进度的 显示;例如 进度条的值(整形的);(不使用的时候;可以不返回:也就是Void);这里使用了进度条的值:整形的;Integer


Result : 

就是获取数据后 ; 返回的结果了;本案例是获取一个图片;所以结果返回图片;当然也可以返回流什么的;在显示的时候做处理生成图片也是可行的;这里是直接处理后返回图片了;

 

图例:


部分代码:网络数据获取;

代码里面有详细的注释说明:

下面是一个获取网络图片 并且显示进度条的例子(测试进度条应该放的位置。)

public class MyAsyncTask_Image extends AsyncTask<String, Void, Bitmap> {
public static String TAG = "MyAsyncTask:---";


// LS:所有的耗时的操作都在这个里面进行; 这个重写是必须要有的
@Override
protected Bitmap doInBackground(String... arg0) {
Log.e(TAG, "doInBackground---");
String geturl = arg0[0];//LS:这里的 arg0 可以是一个str字符串;也可以是一个数组集合;具体要看 调用execute中的参数;在获取图片这个例子中;调用这个函数传递的是一个值:Urls那么这里要取arg0[0]即可;
//所以arg0 其實就是一個數組;
publishProgress();// LS:这里调用进度条的进度;和 onProgressUpdate 方法对应;

return null;
}


// LS:这个是在操作数据前进行的逻辑处理;如在请求数据 前;显示一个 进度条什么的;
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
Log.e(TAG, "onPreExecute---");


}


// LS:用来更新网络获取数据的进度
@Override
protected void onProgressUpdate(Void... values) {
// TODO Auto-generated method stub
super.onProgressUpdate(values);
Log.e(TAG, "onProgressUpdate---" + values);
}


// LS:这个是 用来处理 获取数据后;返回的数据的 处理;
@Override
protected void onPostExecute(Bitmap result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
}


}


部分代码:进度条显示加载;

在重写函数:doInBackground 中 对进度条的进度加载

// ---------------模拟测试进度条的 方法;(开发中:这个进度条应该是在 加载网络数据的时候进行实时进度显示的)
for (int i = 0; i < 100; i++) {
if(mypro.isCancelled()){//LS:这里对应的就是 onPause中的 cancel 方法的 执行者了;
break;//:退出当前循环
}
publishProgress(i);// LS:这个publishProgress
// 方法中的参数就是Integer的参数;也就是AsyncTask
// 中那三个参数中的第二个Integer;这个测试同样可以是一个数组 等;
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}// LS:休眠一下;便于观察 进度条的显示
}
// ++++++++++++++++模拟测试进度条的 方法;以上就是简化版的进度的测试;下面是一个图片获取的案例的演示。


注意: 执行 异步任务 必须放在主线程中执行;

具体不说了 ;夜深了  晚安!  

传送门---


这篇关于AsyncTask 异步任务解析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1148051

相关文章

Python Invoke自动化任务库的使用

《PythonInvoke自动化任务库的使用》Invoke是一个强大的Python库,用于编写自动化脚本,本文就来介绍一下PythonInvoke自动化任务库的使用,具有一定的参考价值,感兴趣的可以... 目录什么是 Invoke?如何安装 Invoke?Invoke 基础1. 运行测试2. 构建文档3.

解决Cron定时任务中Pytest脚本无法发送邮件的问题

《解决Cron定时任务中Pytest脚本无法发送邮件的问题》文章探讨解决在Cron定时任务中运行Pytest脚本时邮件发送失败的问题,先优化环境变量,再检查Pytest邮件配置,接着配置文件确保SMT... 目录引言1. 环境变量优化:确保Cron任务可以正确执行解决方案:1.1. 创建一个脚本1.2. 修

使用Python实现批量访问URL并解析XML响应功能

《使用Python实现批量访问URL并解析XML响应功能》在现代Web开发和数据抓取中,批量访问URL并解析响应内容是一个常见的需求,本文将详细介绍如何使用Python实现批量访问URL并解析XML响... 目录引言1. 背景与需求2. 工具方法实现2.1 单URL访问与解析代码实现代码说明2.2 示例调用

SSID究竟是什么? WiFi网络名称及工作方式解析

《SSID究竟是什么?WiFi网络名称及工作方式解析》SID可以看作是无线网络的名称,类似于有线网络中的网络名称或者路由器的名称,在无线网络中,设备通过SSID来识别和连接到特定的无线网络... 当提到 Wi-Fi 网络时,就避不开「SSID」这个术语。简单来说,SSID 就是 Wi-Fi 网络的名称。比如

SpringCloud配置动态更新原理解析

《SpringCloud配置动态更新原理解析》在微服务架构的浩瀚星海中,服务配置的动态更新如同魔法一般,能够让应用在不重启的情况下,实时响应配置的变更,SpringCloud作为微服务架构中的佼佼者,... 目录一、SpringBoot、Cloud配置的读取二、SpringCloud配置动态刷新三、更新@R

使用Java解析JSON数据并提取特定字段的实现步骤(以提取mailNo为例)

《使用Java解析JSON数据并提取特定字段的实现步骤(以提取mailNo为例)》在现代软件开发中,处理JSON数据是一项非常常见的任务,无论是从API接口获取数据,还是将数据存储为JSON格式,解析... 目录1. 背景介绍1.1 jsON简介1.2 实际案例2. 准备工作2.1 环境搭建2.1.1 添加

Java实现任务管理器性能网络监控数据的方法详解

《Java实现任务管理器性能网络监控数据的方法详解》在现代操作系统中,任务管理器是一个非常重要的工具,用于监控和管理计算机的运行状态,包括CPU使用率、内存占用等,对于开发者和系统管理员来说,了解这些... 目录引言一、背景知识二、准备工作1. Maven依赖2. Gradle依赖三、代码实现四、代码详解五

如何使用celery进行异步处理和定时任务(django)

《如何使用celery进行异步处理和定时任务(django)》文章介绍了Celery的基本概念、安装方法、如何使用Celery进行异步任务处理以及如何设置定时任务,通过Celery,可以在Web应用中... 目录一、celery的作用二、安装celery三、使用celery 异步执行任务四、使用celery

什么是cron? Linux系统下Cron定时任务使用指南

《什么是cron?Linux系统下Cron定时任务使用指南》在日常的Linux系统管理和维护中,定时执行任务是非常常见的需求,你可能需要每天执行备份任务、清理系统日志或运行特定的脚本,而不想每天... 在管理 linux 服务器的过程中,总有一些任务需要我们定期或重复执行。就比如备份任务,通常会选在服务器资

在C#中合并和解析相对路径方式

《在C#中合并和解析相对路径方式》Path类提供了几个用于操作文件路径的静态方法,其中包括Combine方法和GetFullPath方法,Combine方法将两个路径合并在一起,但不会解析包含相对元素... 目录C#合并和解析相对路径System.IO.Path类幸运的是总结C#合并和解析相对路径对于 C