具体看如下分析和代码:
启动异步处理工作(下面两句代码需要在主线程里执行):
UpdateTask task = new UpdateTask();
task.execute(“liming”,“zhangxx”); //这里输入的参数会传给doInBackground()方法
停止异步处理工作:
if (task != null && task.getStatus() == AsyncTask.Status.RUNNING) {
task.cancel(true);//如果Task还在运行,则先取消它
task = null;
}
public class UpdateTask extends AsyncTask<String, Integer, String> {
protected void onPreExecute() {
progressBar.setMax(100);
}
protected String doInBackground(String... params) {
for (int i = 0; i < 100; i++) {
this.publishProgress(i + 1);
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
if (isCancelled())
return null;
}
return "itcast";
}
protected void onPostExecute(String result) {
Toast.makeText(getApplicationContext(), "结果 :" + result, 1).show();
}
protected void onProgressUpdate(Integer... values) {
progressBar.setProgress(values[0]);
}
}
AsyncTask类的三个泛型参数:
第一个指定了doInBackground() 方法输入参数的类型;
第二个指定了onProgressUpdate()方法输入参数的类型;
第三个指定了onPostExecute()方法输入参数的类型和doInBackground() 方法返回值的类型
这三个泛型参数的类型是根据你自己的业务需求来指定的。
onPreExecute(): 该方法在UI线程运行,当AsyncTask的execute()方法执行后,onPreExecute()会首先执行。可以在该方法中做一些准备工作,如初始化进度条的最大值。
doInBackground(Params...): 将在onPreExecute()方法执行后马上执行,该方法运行在子线程中,负责执行耗时操作。在执行耗时操作的过程中你可以不断地调用publishProgress()方法,导致onProgressUpdate()不断地被调用。
onProgressUpdate(Progress...),调用publishProgress()方法,就会导致该方法被执行,该方法运行在UI线程,例如在该方法中你可以更新进度条的显示。
onPostExecute(Result):doInBackground()方法执行后的返回结果会传给该方法,该方法运行在UI线程,在该方法中你可以显示处理结果。
分享到:
相关推荐
为了避免这种情况,Android引入了AsyncTask,这是一个轻量级的并发框架,用于简化在后台线程执行耗时操作并在完成后更新UI的工作流程。AsyncTask包含三个泛型参数,分别代表后台操作的输入类型(Params)、后台操作...
在Android开发中,AsyncTask是一种轻量级的异步处理机制,主要用于在UI线程之外执行耗时操作,以避免阻塞主线程并保持用户界面的流畅性。本篇文章将详细解析AsyncTask的工作原理、使用方法及其优缺点。 首先,...
### Android AsyncTask 详解 #### 一、AsyncTask 概述 `AsyncTask` 是 Android 提供的一个用于执行后台任务的轻量级框架。它能够帮助开发者轻松地在后台线程执行耗时的操作,并且更新 UI 界面而无需直接操作线程和...
Android AsyncTask详解及使用方法 AsyncTask是Android提供的一种轻量级的异步类,用于实现后台任务的执行。它可以直接继承AsyncTask,并在类中实现异步操作,提供接口反馈当前异步执行的程度,并在执行完成后反馈...
"Android多线程AsyncTask详解" Android多线程AsyncTask详解主要为大家详细介绍了Android多线程AsyncTask的相关资料,具有一定的参考价值,本篇随笔将讲解一下Android的多线程的知识,以及如何通过AsyncTask机制来...
AsyncTask定义了三种泛型类型 Params,Progress和Result。 不要手动的调用onPreExecute(), onPostExecute(Result),doInBackground(Params...), onProgressUpdate(Progress...)这几个方法;
AsyncTask的介绍及基本使用方法关于AsyncTask的介绍和基本使用方法可以参考官方文档和《Android开发笔记之:深入理解多线程AsyncTask》这里就不重复。AsyncTask引发的一个问题上周遇到了一个极其诡异的问题,一个小...
AsyncTask是Android提供的一种轻量级异步处理机制,它简化了在UI线程与后台线程之间传递数据的过程。在本文中,我们将深入探讨AsyncTask的原理、使用方法以及其限制。 AsyncTask的定义: 正如官方文档所述,...
AsyncTask是Android中用于在后台线程执行耗时操作并更新UI的一种机制。它通过封装了线程管理和与主线程的交互,简化了在UI线程中处理异步任务的流程。下面我们将深入探讨AsyncTask的使用、原理以及如何更新UI。 ...
AsyncTask详解 butterknife源码详解 InstantRun详解 ListView源码分析 VideoView源码分析 View绘制过程详解 网络部分 HttpURLConnection详解 HttpURLConnection与HttpClient volley-retrofit-okhttp之我们该如何选择...
#### 二、AsyncTask详解 ##### 2.1 AsyncTask 的作用 - `AsyncTask` 是 Android 为简化异步任务处理而设计的一个类。其主要目的是避免阻塞主线程(UI 线程),因为所有的 UI 更新都必须在主线程中完成。 - 通过 `...
Android Asynctask 先小试牛刀,了解一下各个方法执行过程,关注博客http://himici.com/
### Redmine管理员手册之Android图片异步加载方法——AsyncTask详解 #### 一、AsyncTask简介及作用 在Android开发中,特别是在UI界面的操作中,为了避免出现“Application Not Responding”(ANR)的情况,通常不...
**AsyncTask详解** AsyncTask是Android SDK提供的一种轻量级的异步处理机制,特别适合于执行短时间的、与UI相关的后台任务。它的主要优点在于简化了UI更新的过程,同时保持了代码的简洁。AsyncTask定义了三个泛型...
### AsyncTask详解 1. **AsyncTask类介绍**:`AsyncTask`是Android提供的一种简便的异步任务执行框架,主要用于将耗时的操作放在后台线程中执行,同时将结果更新到UI线程。 - **线程池**:默认情况下,`AsyncTask`...