深入认识AsyncTask】的更多相关文章

一.概述 运行时变更就是设备在运行时发生变化(例如屏幕旋转.键盘可用性及语言).发生这些变化,Android会重启Activity,这时就需要保存activity的状态及与activity相关的任务,以便恢复activity的状态. 为此,google提供了三种解决方案: 对于少量数据: 通过onSaveInstanceState(),保存有关应用状态的数据. 然后在 onCreate() 或 onRestoreInstanceState() 期间恢复 Activity 状态. 对于大量数据:用…
AsyncTask和Handler对比 1 ) AsyncTask实现的原理,和适用的优缺点 AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(可以通过接口实现UI进度更新),最后反馈执行的结果给UI主线程. 使用的优点: l  简单,快捷 l  过程可控 使用的缺点: l  在使用多个异步操作和并需要进行Ui变更时,就变得复杂起来. 2 )Handler异步实现的原理和适用的优缺点 在Handler…
前言: 前面几篇文章主要学习了线程以及线程池的创建与使用,今天来学习一下AsyncTask异步任务,学习下AsyncTask到底解决了什么问题?然而它有什么弊端?正所谓知己知彼百战百胜嘛! 线程管理相关文章地址: Android线程管理之Thread使用总结 Android线程管理之ExecutorService线程池 Android线程管理之ThreadPoolExecutor自定义线程池 Android线程管理之AsyncTask异步任务 Android线程管理之ThreadLocal理解及…
Android提供了一个工具类:AsyncTask,它使创建需要与用户界面交互的长时间运行的任务变得更简单.相对Handler来说AsyncTask更轻量级一些,适用于简单的异步处理,不需要借助线程和Handter即可实现.AsyncTask是抽象类.AsyncTask定义了三种泛型类型Params,Progress和Result: Params启动任务执行的输入参数,比如,HTTP请求的URL. Progress后台任务执行的百分比. Result后台执行任务最终返回的结果,比如String.…
“阶段一”是指我第一次系统地学习Android开发.这主要是对我的学习过程作个记录. 最近学到用AsyncTask来处理有关网络的操作.虽然代码看上去不是很复杂,但仍有很多地方有疑惑.所以研读了一下API文档,在这里把我学到的和练习的代码展示出来.如有错误,欢迎指出! 一.关于AsyncTask的<Params, Progress, Result> 在创建AsyncTask的子类时,必须给出这三个具体的类型值,尖括号是泛型的意思.我不太理解API文档的解释,但往下看 doInBackgroun…
第一章  AsyncTask的基本构成 为是么要异步任务 1)Android单线程模型 2)耗时操作放在非主线程中执行 AsyncTask为何而生 1)子线程中跟新UI 2)封装.简化异步操作 public class MyAsyncTask extends AsyncTask<Void, Void, Void> { @Override protected Void doInBackground(Void... params) {//必须重写,其他方法没有规定必须重写 // TODO 自动生成…
reference to : http://blog.csdn.net/a910626/article/details/45599133 我看了一下asyncTask是从LV3开始,AsyncTaskLoader是从LV11开始的. 是不是说LV11以后,AsyncTaskLoader可以替代AsyncTask了? 还有,在Android开发里,异步加载的方法很多,普遍流行和最常用的是那种方法? 是不是如果想带有进度展示的话,那AsyncTask是首选? 在statckOverflow里查了一下…
服务器代码:用于接收客户端信息 package ches; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletReque…
什么是异步任务? 异步任务就是开一个子线程,然后让它去跑,它跑完了就会回来告诉你说,它跑完了,这是结果.这和Java中的回调差不多.我们在OKHttp中很长见到的 onSuccess() 和 onError() 这些都是回调函数.当然这篇博文不讨论这些回调,只讨论Android中自带的异步任务. Android官方在4.0以后的版本系统里面就禁止在主线程访问网络了. 解决这个的唯一的办法就是开一个子线程,子线程去访问网络.刚好,google 给 Android 写了一个方便广大各位编程人员使用的…
转载请声明出处谢谢!http://www.cnblogs.com/linguanh/ 这里主要使用Executors中的4种静态创建线程池实例方法中的 newFixedThreadPool()来举例讲解. 简单说下Executors类,提供的一系列创建线程池的方法: 他们都有两个构造方法 1. --------newFixedThreadPool (创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待.) public static ExecutorService newFixed…
AsyncTask是用来处理一些后台的比较耗时的任务,给用户带来良好的体验.AsyncTask扩展Thread,增强了与主线程的交互能力. 首先介绍AsyncTask中定义的以下几个方法: onPreExecute():该方法在执行后台操作前被UI线程调用,可以做一些准备工作,如图片加载之前先显示进度条等 doInBackground(Params...):该方法运行在后台线程中,比较耗时的操作可以写在此方法中 onProgressUpdate(Progress...):该方法只有在doInBa…
AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(可以通过接口实现UI进度更新),最后反馈执行的结果给UI主线程. 本文不分析AsyncTask的使用,它的使用教程网上一搜一大堆,本文主要分析它的内部逻辑和实现,它是怎么实现异步的,它是怎么处理多个任务的,是并发么?? 一.线程任务的调度 在AsyncTask内部会创建一个类相关的线程池来管理要运行的任务,也就就是说当你调用了AsyncTask的exec…
前言:由于最近在做SDK的功能,需要设计线程池.看了很多资料不知道从何开始着手,突然发现了AsyncTask有对线程池的封装,so,就拿它开刀,本文将从AsyncTask的基本用法,到简单的封装,再到任务队列分析,最后自定义线程池. 1.概念 Android 中的异步任务常用的一种方式是:Handler + Thread 组合来实现的.Thread 负责子线程的耗时操作,Handler 负责线程间的通信,用的最多的当属子线程和主线程通信. Android 为了简化操作,提供了 AsyncTask…
AsyncTask相信大家都不陌生,它是为了简化异步请求.更新UI操作而诞生的.使用它不仅可以完成我们的网络耗时操作,而且还可以在完成耗时操作后直接的更新我们所需要的UI组件.这使得它在android开发中成为炙手可热的网络请求工具类. 而今天我们就以源码分析的形式来彻底的学习下它的实现过程. 首先,我们先看看AsyncTask的定义形式: public abstract class AsyncTask<Params, Progress, Result> { } 首先AsyncTask它是一个…
AsyncTask是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(可以通过接口实现UI进度更新),最后反馈执行的结果给UI主线程. AsyncTask直接继承于Object类,位置为android.os.AsyncTask.要使用AsyncTask工作我们要提供三个泛型参数,并重载几个方法(至少重载一个). AsyncTask定义了三种泛型类型 Params,Progress和Result. (1)Params 启动任务…
//AsyncTask从本质上讲,是对ThreadPool和handler的封装. 在学习线程池相关的知识时,看到书中提到AsyncTask的实现中使用到了ThreadPool,于是把源码翻了出来, 源码并不长,顺便分析了一下.小白挑战,大牛勿喷(好像大牛也不会看到...) 成员变量的解析 我打算先把成员变量分析一下(AsyncTask源码不是很复杂,可以这么做,算是特殊情况吧),算是为后面分析AsyncTask的工作流程做铺垫. 线程池 THREAD_POOL_EXECUTOR //cpu核心…
异步任务学习 这两天使用到特别多的AsyncTask类,一块来学习一下吧 AsyncTask允许更方便和简单使用UI线程,这个类允许你在UI线程中进行后台操作和展示结果,而无需操作Thread或者handlers AsyncTask是围绕Thread和Handler设计的辅助类,并不构成通用线程框架.AsyncTask最适合的场景是短时间操作(最好几秒钟),如果你需要保持长时间的运行,建议你使用java.util.concurrent包提供的API,比如Executor,ThreadPoolEx…
的最佳方案 标签: Android屏幕旋转AsyncTaskProgressDialog 2014-07-19 09:25 39227人阅读 评论(46) 收藏 举报 分类: [android 进阶之路](70) [Android 精彩案例](36) 版权声明:本文为博主原创文章,未经博主允许不得转载.   目录(?)[+]   转载请表明出处:http://blog.csdn.net/lmj623565791/article/details/37936275 1.概述 众所周知,Activit…
转载自:http://blog.csdn.net/liuhe688/article/details/6532519 在Android中实现异步任务机制有两种方式,Handler和AsyncTask. Handler模式需要为每一个任务创建一个新的线程,任务完成后通过Handler实例向UI线程发送消息,完成界面的更新,这种方式对于整个过程的控制比较精细,但也是有缺点的,例如代码相对臃肿,在多个任务同时执行时,不易对线程进行精确的控制.关于Handler的相关知识,前面也有所介绍,不清楚的朋友们可…
下面以下载图片并显示为例: 首先我们需要知道的是AsyncTask是对线程池+Handler的进一步封装. 下面看一个简单的代码: public class MainActivity extends Activity { private ImageView ivIcon; private static String myUrl = "http://192.168.1.2:8080/tomcat.gif";//图片的ip地址 @Override protected void onCrea…
AsyncTask定义了三种泛型类型 Params,Progress和Result. Params 启动任务执行的输入参数,比如HTTP请求的URL.Progress 后台任务执行的百分比.Result 后台执行任务最终返回的结果,比如String.使用过AsyncTask 的同学都知道一个异步加载数据最少要重写以下这两个方法: doInBackground(Params-) 后台执行,比较耗时的操作都可以放在这里.注意这里不能直接操作UI.此方法在后台线程执行,完成任务的主要工作,通常需要较长…
在一个Activity页面,如果发起了AsyncTask任务,然后页面离开/销毁了,此时如果doInBackground没执行完,会有两个问题: 1, AsyncTask白白消耗资源,结果已经用不上了,因为UI也不在: 2, AsyncTask如果声明为Activity的内部类,会持有Activity这个宿主类,导致Activity内存泄露. 所以一定要在Activity onDestory的时候cancel掉AsyncTask任务. 怎么从一个App的架构层面来约束所有的业务模块都自动做这个事…
一.AsyncTask的作用: 代替Thread+Handler的组合,使创建异步任务变得简单. AsyncTask执行后台操作,并在用户界面上发布结果,而不必处理线程. 二.AsyncTask的定义: public abstract class AsyncTask<Params,Progress,Result> extends Object AsyncTask必须子类可以使用.子类将覆盖至少一个方法(doInBackground执行异步任务),通常会覆盖一次(onPostExecute显示结…
|- AsyncTask内的各个方法调用顺序:|- 首先,用户调用execute方法,启动AsyncTask .然后在execute方法中:|- 首先调用onPreExecute方法,执行初始化操作.|- 然后从线程池中取出若干个空闲的线程,并使用该线程调用doInBackground方法,执行耗时的操作,如文件下载等.|- 提示:调用execute方法时设置的参数会被直接传递给doInBackground方法.|- 当doInBackground方法执行完毕后,onPostExecute方法将…
1 package com.ch.day8_asynctaskdemo; 2 3 import java.util.ArrayList; 4 5 import com.ch.myutils.NetWorkUtil; 6 7 import android.os.AsyncTask; 8 import android.os.Bundle; 9 import android.app.Activity; 10 import android.content.Context; 11 import andro…
---恢复内容开始--- 因为android的UI线程是不安全的,如果你UI线程里执行一些耗时任务,很容易就导致程序崩溃.并且目前网络任务也不能够在UI线程里执行.处理这些问题除了直接写一个线程以外,Android还提供一个AsyncTask(异步任务类)来更简单的处理一些耗时任务. AsyncTask<>是一个抽象类,通常用于继承,继承时需要指定三个泛型参数. 1.Params:启动任务时传入的参数的类型.这是一个数组,可以传多个参数.调用时使用params[0].params[1].par…
package com.gg.test; import java.io.IOException; import org.apache.http.HttpResponse;import org.apache.http.HttpStatus;import org.apache.http.client.ClientProtocolException;import org.apache.http.client.HttpClient;import org.apache.http.client.method…
//网络请求数据 package com.baidu.myutils; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import android.content.Context; import android.net.Con…
在Android中实现异步任务机制有两种方式,Handler和AsyncTask. Handler模式需要为每一个任务创建一个新的线程,任务完成后通过Handler实例向UI线程发送消息,完成界面的更新,这种方式对于整个过程的控制比较精细,但也是有缺点的,例如代码相对臃肿,在多个任务同时执行时,不易对线程进行精确的控制.关于Handler的相关知识,前面也有所介绍,不清楚的朋友们可以参照一下. 为了简化操作,Android1.5提供了工具类android.os.AsyncTask,它使创建异步任…
前面说了如何操作AsyncTask,这篇我们来说一下如何关闭AsyncTask. 有人就问了:为什么要关闭AsyncTask呢?很简单,AsyncTask 是在后台执行耗时操作(获取数据),当你离开当前页面或者结束进程时,也就是跳到你另一个页面不需要当前页面的数据.如果不关闭,其它页面无法显示数据,因为后台还在获取当前页面的数据,也可理解为堵塞. 现在我们再运行一下上一篇博客里的app: 我们点击Back后再次进入App,点击产看数据 我们会发现,再次点击时,数据没有立刻加载,而是过了一会才加载…