同步和异步的概念区别:

同步,必须执行完成某个问题后才能继续执行其他的。

异步,我会去先执行其他问题,你执行完之后返回给我一个结果就可以。

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异步任务的更多相关文章

  1. Android基础新手教程——3.7 AnsyncTask异步任务

    Android基础新手教程--3.7 AnsyncTask异步任务 标签(空格分隔): Android基础新手教程 本节引言: 本节给大家带来的是Android给我们提供的一个轻量级的用于处理异步任务 ...

  2. 3.7 AnsyncTask异步任务

    3.7 AnsyncTask异步任务. 1)为什么要用AsyncTask? 答: 我们可以用上述两种方法来完成我们的异步操作,加入要我们写的异步操作比较多,或者较为繁琐, 难道我们new Thread ...

  3. ArcGIS Runtime for Android 使用异步GP服务绘制等值线

    关于基于Android上ArcGIS Server GP服务的调用,已经有前辈给出了很好的例子: http://blog.csdn.net/esrichinacd/article/details/92 ...

  4. Android 图片异步加载的体会,SoftReference已经不再适用

      在网络上搜索Android图片异步加载的相关文章,目前大部分提到的解决方案,都是采用Map<String, SoftReference<Drawable>>  这样软引用的 ...

  5. Android图片异步加载之Android-Universal-Image-Loader

    将近一个月没有更新博客了,由于这段时间以来准备毕业论文等各种事务缠身,一直没有时间和精力沉下来继续学习和整理一些东西.最近刚刚恢复到正轨,正好这两天看了下Android上关于图片异步加载的开源项目,就 ...

  6. Android图片异步加载之Android-Universal-Image-Loader(转)

    今天要介绍的是Github上一个使用非常广泛的图片异步加载库Android-Universal-Image-Loader,该项目的功能十分强大,可以说是我见过的目前功能最全.性能最优的图片异步加载解决 ...

  7. (转)ArcGIS Runtime for Android 使用异步GP服务绘制等值线

    关于基于Android上ArcGIS Server GP服务的调用,已经有前辈给出了很好的例子: http://blog.csdn.net/esrichinacd/article/details/92 ...

  8. [Android] Android 用于异步加载 ContentProvider 中的内容的机制 -- Loader 机制 (LoaderManager + CursorLoader + LoaderManager.LoaderCallbacks)

    Android 用于异步加载 ContentProvider 中的内容的机制 -- Loader 机制 (LoaderManager + CursorLoader + LoaderManager.Lo ...

  9. Android:异步处理之Handler、Looper、MessageQueue之间的恩怨(三)

    前言 如果你在阅读本文之前,你不知道Handler在Android中为何物,我建议你先看看本系列的第一篇博文<Android:异步处理之Handler+Thread的应用(一)>:我们都知 ...

  10. Android:异步处理之AsyncTask的应用(二)

    前言 在上一篇文章中<Android:异步处理之Handler+Thread的应用(一)>,我们知道Android的UI主线程主要负责处理用户的按键事件.用户的触屏事件以及屏幕绘图事件等: ...

随机推荐

  1. J2EE十三个规范小结

    J2ee是我们步入java学习的一个開始.它将开启这趟奇幻之旅,Java是一种简单的,跨平台的,面向对象的,分布式的.解释的.健壮的安全的.结构的中立的,可移植的.性能非常优异的多线程的,动态的语言. ...

  2. POJ 1861:Network(最小生成树&amp;&amp;kruskal)

    Network Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 13266   Accepted: 5123   Specia ...

  3. Android进程间通信与数据共享(ppt)

  4. [源码]解析 SynchronousQueue 上界,下界.. 数据保存和数据传递. 堵塞队列. 有无频繁await?

     简析SynchronousQueue.LinkedBlockingQueue(两个locker,更快),ArrayBlockingQueue(一个locker,读写都竞争)     三者都是bloc ...

  5. Ajax 学习总结

    Ajax 技术在 JavaWeb 应用中随处可见,比如购物车中根据商品数量及时更新等应用,那么我们今天就来说说 Ajax 的一些小应用! Ajax 技术也就是允许浏览器与服务器通信而无需刷新当前页面, ...

  6. 在dotnet core web api中支持CORS(跨域访问)

    最近在写的Office add-in开发系列中,其中有一个比较共性的问题就是在add-in的客户端脚本中访问远程服务时,要特别注意跨域访问的问题. 关于CORS的一些基本知识,请参考维基百科的说明:h ...

  7. TableML-GUI篇(Excel编译/解析工具)

    项目情况 本文接上篇TableML Excel编译/解析工具,本文主要介绍GUI工具的使用,及配置项,如果你想了解此工具更加详细的说明,请阅读上篇文章. 项目地址:https://github.com ...

  8. 三.RabbitMQ之异步消息队列(Work Queue)

    上一篇文章简要介绍了RabbitMQ的基本知识点,并且写了一个简单的发送和接收消息的demo.这一篇文章继续介绍关于Work Queue(工作队列)方面的知识点,用于实现多个工作进程的分发式任务. 一 ...

  9. lock锁速记

    1.Lock关键字主要实现锁互斥,确保一个线程A在请求此操作时不会被其线程B请求中断(假设A先请求并在没有未完成的操作情况下申请了此互斥锁).lock的参数必须是基于引用类型的对象,不要是基本类型像b ...

  10. 青否云 - 小程序待办事项vue开源系统

    青否云最新开源系统:小程序待办事项 vue-demo 青否云 vue demo 下载地址:https://github.com/qingful/vue-demo 官网 http://cloud.qin ...