异步任务(AsyncTask)
1.Android UI组件更新简介
Android的UI线程主要负责处理用户的按键事件、用户触屏事件及屏幕绘图事件等,因此开发者的其它操作不应该,也不能阻塞UI线程,否则UI界面将会变的停止响应。Android默认约定当UI线程阻塞超过20秒将会引发ANR异常。不要在UI线程中执行一线耗时的操作。
为了避免UI线程失去响应的问题,Android建议将耗时操作放在新的线程中完成,但是新的线程也可能需要动态更新UI组件:例如需要从网上获取一个页面,然后在TextView中显示,辞职就应该将连接的网络、获取网络数据的操作放在新的线程中,但是获取网络数据以后,新的线程不允许直接更新UI组件。
为了界面新线程无法更新UI组件问题,Android提供了如下几种解决办法:
1.使用Handler实现线程之间的通信
2.Activity.runOnUiThread(Runnable)
3.View.post(Runable)
4.View.postDelayed(Runnable,long)
使用异步新线程更新UI组件时比较简单。
2.Async<>抽象类:
Params:启动任务执行的输入参数的类型。
Progress:后台任务完成的进度值的类型
Result:后台执行任务完成后返回结果的类型。
3.Async子类的使用步骤:
第一步:创建AsyncTask子类(继承AsyncTask的类),并为三个泛型指定类型。如果某个泛型参数不需要指定类型,可将它指定为void。
第二步:根据需要,实现AsyncTask的如下方法
Result doInBackground(Params... params);//后台线程将要完成的任务,该方法可以调用publishProgress(Progress... values)方法更新任务的执行进度
onProgressUpdate(Progress... values);//更新任务的执行进度后,将会处罚该方法
onPreExecute() //在执行后台耗时操作前被调用,一般用于完成一些初始化的工作,例如显示进度条等
onPostExecute(Result result) //当doInBackground()完成后,系统会自动调用该方法,并将doInBackground()的返回值传给该方法。
第三步:调用AsyncTask子类的实例的execute(Params... params)开始执行耗时任务。
4.使用异步的规则:
1.必须在UI线程中创建AsyncTask的实例
2.必须在UI线程中创建AsyncTask的execute()方法
3.AsyncTask的onPreExecute()、onPostExecute(Result result)、doInBackground(Params... params)、onProgressUpdate(Progress... values)方法,由Android系统负责调用。
4.每一个AsyncTask只能被执行一次,多次调用将会引发异常
5.异步任务的示例:
下载一个网络资源显示在TextView中,布局很简单一个TextView和一个Button按钮,下面是Activity的程序代码:
public class AsyncTaskActivity extends Activity {
TextView txtHtml ;
Button btnDownload;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_asynctask);
txtHtml = (TextView)findViewById(R.id.txtHtml);
btnDownload = (Button)findViewById(R.id.btnDownload); btnDownload.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
DownTask task = new DownTask(AsyncTaskActivity.this);
task.execute(new URL("http://www.ui.cn/"));//http://www.crazyit.org/ethos.php
}
catch (Exception e){
e.printStackTrace();
} }
}); } class DownTask extends AsyncTask<URL,Integer,String>{ ProgressDialog pdialog ;//进度对话框
int hasRead=0;
Context mContext;
public DownTask(Context ctx){
mContext = ctx;
}
//重写改方法就是后台线程将要完成的任务。(完成实际的下载任务)
@Override
protected String doInBackground(URL... params) {
StringBuilder sb = new StringBuilder();
try
{
//创建URL连接对象
URLConnection conn = params[0].openConnection();
//打开conn连接对象的输入流,并将它包装成BufferdReader
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream(),"utf-8"));
String line = null;
while ((line = br.readLine()) !=null){
sb.append(line+"\n");
hasRead++;
publishProgress(hasRead);
}
return sb.toString();
}
catch (Exception e){
e.printStackTrace();
}
return null;
} //当下载完成后,将下载的代码显示出来
@Override
protected void onPostExecute(String s) {
txtHtml.setText(s);
pdialog.dismiss();
} //在下载开始的时候显示一个进度条
@Override
protected void onPreExecute() {
pdialog = new ProgressDialog(mContext);
pdialog.setTitle("任务正在执行中");//设置对话框标题
pdialog.setMessage("任务正在执行中,敬请等待....");
pdialog.setCancelable(false);//设置对话框不能用取消按钮
pdialog.setMax(202);
pdialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
pdialog.setIndeterminate(false);
pdialog.show(); } //负责随着下载进度的改变更新进度条的进度值
@Override
protected void onProgressUpdate(Integer... values) {
txtHtml.setText("已经读取了【"+values[0]+"】行!");
pdialog.setProgress(values[0]);
}
} }
AcitvityCode
结果图片:
aaarticlea/png;base64,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" alt="" />
异步任务(AsyncTask)的更多相关文章
- Android 之异步任务(AsyncTask,Handler,Message,looper)
AsyncTask: 3个类型(Params,Progress和Result),4个步骤(onPreExecute(),doInBackground(Params…),onProgressUpdate ...
- 异步任务AsyncTask使用解析
在Android中实现异步任务机制有两种方式,Handler和AsyncTask. Handler模式需要为每一个任务创建一个新的线程,任务完成后通过Handler实例向UI线程发送消息,完成界面的更 ...
- Android中异步类AsyncTask的理解
这里有两种解释的方法,各有侧重点: 第一种解释: Async Task 简介:AsyncTask的特点是任务在主线程之外运行,而回调方法是在主线程中执行,这就有效地避免了使用Handler带来的麻烦 ...
- Android异步任务AsyncTask
package com.example.asynctask; import java.net.MalformedURLException; import java.net.URL; import an ...
- 两个异步处理AsyncTask和Handler的优缺点
AsyncTask和Handler对比 1 ) AsyncTask实现的原理,和适用的优缺点 AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操 ...
- Android Studio利用异步任务AsyncTask发送post请求获取json数据
syncTask,是Android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(可以通过接口实现UI进度更新),最后反馈执行的结果给UI主 ...
- Android 异步任务——AsyncTask (附使用AsyncTask下载图片Demo)
我们编程的时候经常需要处理同步任务和异步任务,在Android里面存在一个特性,就是UI线程是不安全的线程.所谓UI线程不安全也就是我们的主线程(进程启动的第一个线程)不能在线程外操作主线程的资源.因 ...
- Android源代码解析之(三)-->异步任务AsyncTask
转载请标明出处:一片枫叶的专栏 上一篇文章中我们解说了android中的异步消息机制. 主要解说了Handler对象的使用方式.消息的发送流程等.android的异步消息机制是android中多任务处 ...
- android:异步任务asyncTask介绍及异步任务下载图片(带进度条)
为什么要用异步任务? 在android中仅仅有在主线程才干对ui进行更新操作.而其他线程不能直接对ui进行操作 android本身是一个多线程的操作系统,我们不能把全部的操作都放在主线程中操作 .比方 ...
随机推荐
- Hao123这个流氓
Author:KillerLegend Date:2014.2.27 From:http://www.cnblogs.com/killerlegend/p/3572591.html Hao123真让人 ...
- WCF全面解析第一章 WCF 简介
1.WCF中的 "A","B","C" 介绍 我们先看个生活中的例子,某一天,公司的领导让你去送一份合同文件,送文件的过程你可以选择的交通方 ...
- [转]SQLServer 2008以上误操作数据库恢复方法——日志尾部备份
原文出处:http://blog.csdn.net/dba_huangzj/article/details/8491327 问题: 经常看到有人误删数据,或者误操作,特别是update和delete的 ...
- 使用WIF实现单点登录Part II —— Windows Identity Foundation基本原理
在上一篇文章中,我们已经使用WIF构建了一个基于MVC4的简单的身份验证程序,在这篇文章里,我们将探讨一下到底什么是WIF,以及它的工作原理.然后在下一篇文章开始,我们将实际操作,实现单点登录功能. ...
- POJ--1416
#include <stdio.h> #include <stdlib.h> ]={};//代表有没有切割的数组 ;//输入的要被切割的数字 ]={};//切完输出的数组成的数 ...
- uboot启动流程
uboot 的启动过程及工作原理2.1 启动模式介绍 大多数 Boot Loader 都包含两种不同的操作模式:"启动加载"模式和"下载"模式,这种区别仅 ...
- python zip函数介绍
首先用help(zip)来看一下帮助文档:
- android ptl
Gerrit android update sdk --no-uiadb logcat MyActivity:* *:S Connecting adb over Wi-Fiadb tcpip 5555 ...
- 刀哥多线程串行队列gcd-04-dispatch_queue_serial
串行队列 特点 以先进先出的方式,顺序调度队列中的任务执行 无论队列中所指定的执行任务函数是同步还是异步,都会等待前一个任务执行完成后,再调度后面的任务 队列创建 dispatch_queue_t q ...
- OC编写使用调试器
OC编写使用调试器 编写代码免不了,Bug.那么Debug就是程序员的必备技能了.本文和大家一起探讨,如何在应用开发编写代码过程中,使用日志项消息:以及使用动作.条件.迭代控制增强断点. 记录信息 在 ...