Android-AnsyncTask异步任务
同步和异步的概念区别:
同步,必须执行完成某个问题后才能继续执行其他的。
异步,我会去先执行其他问题,你执行完之后返回给我一个结果就可以。
android中为什么要引用异步任务呢
android启动的,会启动一个线程也称为主线程,UI线程,但是我们不能把所有耗时的任务交给主线程来完成,这样会影响用户的体验,也就是说我们要另外的开辟新的线程来执行我们的任务,
但是在android中,(加载图片,网络编程都属于耗时的操作),在android4.0后规定禁止在主线程中完成网络操作,所以说这些耗时的任务要交给子线程,
问题,子线程中是不能进行ui操作的,只有作为主线程的ui线程才能够进行ui操作,那么我们怎么讲信息返回给用户呢。
方式1.我们可以通过handler,在handler中写好了跟新的操作,在子线程中调用sendmessage通知我们的handler跟新ui
方式2.利用Activity.runonUIThread(Runnable)进行子线程到ui线程的切换。
为什么要是用AsyncTask?
很简单,人都是很懒的,使用上述的两种方式操作麻烦,所以大佬们就封装了一个异步执行的方法,便于我们直接处理耗时逻辑,更新UI.
我们一般用它完成网络操作,图片加载,数据传输等操作。(当然后续我们会选择我们的第三方的框架来完成)
Asynctask的基本使用:
首先它是一个抽象类,也就是说我们要重写他的方法然后在new
AsyncTask<Params,progress,result>
parames:启动任务的时候执行的参数,比如传入的url
Progress:后台执行进度的百分比单位
result:执行完异步操作后返回的结果
(与handler相比,他的后台是一个线程池,再数据庞大的时候回体现出优势)
AsyncTask的几个重要的方法
@Override
protected void onPreExecute() {
super.onPreExecute();
}
//执行耗时操作之前调用的一个方法,相当于我们的初始化的方法
注意该该方法是运行在ui线程中的
@Override
protected String doInBackground(String... params) {
return null;
}
该方负责执行我们耗时的业务逻辑操作,也就是说他是在子线程中运行的,如果想要更新ui怎么办
调用的我们的publicProgress方法可以更新我们的ui,此方法是在子线程中运行的
publishProgress(Object o);
此方法表示更新我们的进度,可用于更新下载的进度条等。
@Override
protected void onProgressUpdate(Integer... values) {
super.onProgressUpdate(values);
}
此方法是在主线程中执行的方法,一旦我们在耗时逻辑代码中调用了publicProgress就表示我们希望更新进度条。
此时就会调用这个方法到ui线程跟新我们的进度条。
注意:task实例必须在ui线程中创建 task.excute(初始参数比如url);
我们无需手动的调用task中的方法
task只能被执行一次
文章参考csdn小猪的android基础知识对应文章。如果有兴趣推荐大家可去阅读。
Android-AnsyncTask异步任务的更多相关文章
- Android基础新手教程——3.7 AnsyncTask异步任务
Android基础新手教程--3.7 AnsyncTask异步任务 标签(空格分隔): Android基础新手教程 本节引言: 本节给大家带来的是Android给我们提供的一个轻量级的用于处理异步任务 ...
- 3.7 AnsyncTask异步任务
3.7 AnsyncTask异步任务. 1)为什么要用AsyncTask? 答: 我们可以用上述两种方法来完成我们的异步操作,加入要我们写的异步操作比较多,或者较为繁琐, 难道我们new Thread ...
- ArcGIS Runtime for Android 使用异步GP服务绘制等值线
关于基于Android上ArcGIS Server GP服务的调用,已经有前辈给出了很好的例子: http://blog.csdn.net/esrichinacd/article/details/92 ...
- Android 图片异步加载的体会,SoftReference已经不再适用
在网络上搜索Android图片异步加载的相关文章,目前大部分提到的解决方案,都是采用Map<String, SoftReference<Drawable>> 这样软引用的 ...
- Android图片异步加载之Android-Universal-Image-Loader
将近一个月没有更新博客了,由于这段时间以来准备毕业论文等各种事务缠身,一直没有时间和精力沉下来继续学习和整理一些东西.最近刚刚恢复到正轨,正好这两天看了下Android上关于图片异步加载的开源项目,就 ...
- Android图片异步加载之Android-Universal-Image-Loader(转)
今天要介绍的是Github上一个使用非常广泛的图片异步加载库Android-Universal-Image-Loader,该项目的功能十分强大,可以说是我见过的目前功能最全.性能最优的图片异步加载解决 ...
- (转)ArcGIS Runtime for Android 使用异步GP服务绘制等值线
关于基于Android上ArcGIS Server GP服务的调用,已经有前辈给出了很好的例子: http://blog.csdn.net/esrichinacd/article/details/92 ...
- [Android] Android 用于异步加载 ContentProvider 中的内容的机制 -- Loader 机制 (LoaderManager + CursorLoader + LoaderManager.LoaderCallbacks)
Android 用于异步加载 ContentProvider 中的内容的机制 -- Loader 机制 (LoaderManager + CursorLoader + LoaderManager.Lo ...
- Android:异步处理之Handler、Looper、MessageQueue之间的恩怨(三)
前言 如果你在阅读本文之前,你不知道Handler在Android中为何物,我建议你先看看本系列的第一篇博文<Android:异步处理之Handler+Thread的应用(一)>:我们都知 ...
- Android:异步处理之AsyncTask的应用(二)
前言 在上一篇文章中<Android:异步处理之Handler+Thread的应用(一)>,我们知道Android的UI主线程主要负责处理用户的按键事件.用户的触屏事件以及屏幕绘图事件等: ...
随机推荐
- The literal of int xxxxx is out of range
有时候我们定义了long型的变量,当我们给该变量赋值过长的整数时,系统依旧会提示长度超过范围,解决的方法例如以下: long timeShow = 1437565243495L; 我们须要在整形变量的 ...
- POJ-1250
#include<iostream> #include<string> #include<list> #include<algorithm> using ...
- 《Pro Android Graphics》读书笔记之第六节
Android UI Layouts: Graphics Design Using the ViewGroup Class Android ViewGroup Superclass: A Founda ...
- OR1200中指令Cache的结构
下面内容摘自<步步惊芯--软核处理器内部设计分析>一书 12.3 ICache结构 OR1200中实现ICache的文件有or1200_ic_top.v.or1200_ic_fsm.v.o ...
- GIT如何从本地上传代码到github
转载请标明出处: http://blog.csdn.net/hanhailong726188/article/details/46738929 本文出自:[海龙的博客] 开篇之前说下题外话,之前写过一 ...
- 《算法 (第4版)》【PDF】下载
<算法 (第4版)>[PDF]下载链接: https://u253469.ctfile.com/fs/253469-231196349 (第4版)>[PDF]" TITL ...
- Visual Studio Code 通过 Chrome插件Type Script断点调试Angular 2
1. 下载Visual Studio Code (https://code.visualstudio.com/) 2. 安装插件Debugger for chrome 3. 确定tsconfig.js ...
- bzoj 3551: [ONTAK2010]Peaks加强版
Description [题目描述]同3545 Input 第一行三个数N,M,Q. 第二行N个数,第i个数为h_i 接下来M行,每行3个数a b c,表示从a到b有一条困难值为c的双向路径. 接下来 ...
- Java基础--二进制运算
1. System.out.println((byte)0x8f); 结果是? 2.System.out.println((byte)(0xc5>>1)); 结果是? 3.System.o ...
- Linux下磁盘监控及系统版本-CPU-内存等查看
1.磁盘IO监控工具 iotop 输入命令:iotop 主要查看程序使用的磁盘IO的信息 安装:yum -y install iotop 第一行:10:01:23 — 当前系统时间126 days ...