AsyncTask理解- Day36or37】的更多相关文章

AsyncTask理解- Day36or37 mobile 5.0 1.手机归属地查询 AtoolsActivity Assets目录特点 该文件是原生文件,不会对里面的文件进行编码 该文件只支持读取,并且不在R文件中注册– 不能加载需要发短信的联系人. 问题堆栈 郭玲动画博客 群发2.0 lintView加载联系人 默写增删改查类. 命令访问数据库的博客 AsyncTask理解 作用:主要是用来异步消息的处理.主要为了程序员方便从子线程切换主线程中. 参数 . Params 在执行AsyncT…
一.结构 public abstract class AsyncTask extends Object java.lang.Object android.os.AsyncTask<Params, Progress, Result> 二.类概述 AsyncTask能够适当地.简单地用于 UI线程. 这个类不需要操作线程(Thread)就可以完成后台操作将结果返回UI. 异步任务的定义是一个在后台线程上运行,其结果是在 UI线程上发布的计算. 异步任务被定义成三种泛型类型: Params,Prog…
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/11711405 我们都知道,Android UI是线程不安全的,如果想要在子线程里进行UI操作,就需要借助Android的异步消息处理机制.之前我也写过了一篇文章从源码层面分析了Android的异步消息处理机制,感兴趣的朋友可以参考 Android Handler.Message完全解析,带你从源码的角度彻底理解 . 不过为了更加方便我们在子线程中更新UI元素,Android从1.…
Looper 和Handler 是理解好AsyncTask的一个基础,我们可以先从这里开始,先给出一个主线程和子线程互相通信的例子. package com.example.loopertest; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.os.Message; import android.u…
一.为什么需要工作者线程 我们知道,Android应用的主线程(UI 线程)肩负着绘制用户界面和及时响应用户操作的重任,为了避免“用户点击按钮后没反应”这样的糟糕用户体验,我们就要确保主线程时刻保持着较高的响应性.为了做到这一点,我们就要把耗时的任务移出主线程,那么耗时的任务交给谁来完成呢?答案就是工作者线程.Android开发中我们通常让主线程负责前台用户界面的绘制以及响应用户的操作,让工作者线程在后台执行一些比较耗时的任务.Android中的工作者线程主要有AsyncTask.IntentS…
这个标题大家不要奇怪,扯Http框架怎么扯到AsyncTask去了,有两个原因:首先是Http框架除了核心http理论外.其技术实现核心也是线程池 + 模板 + handler,而AsyncTask又正好也是这三者的完美结合.其次,也是自己在面试中发现大量的安卓开发人员全然不了解AsyncTask的原理和技术细节.而AsyncTask的思想在我们设计app框架和性能调优的时候是非常实用的.所以这里特地写一篇关于AsyncTask的博文. 老规矩,我的习惯还是通过写demo,把核心技术一点点剥离出…
我们都知道,Android UI是线程不安全的,如果想要在子线程里进行UI操作,就需要借助Android的异步消息处理机制.之前我也写过了一篇文章从源码层面分析了Android的异步消息处理机制,感兴趣的朋友可以参考 Android Handler.Message完全解析,带你从源码的角度彻底理解 . 不过为了更加方便我们在子线程中更新UI元素,Android从1.5版本就引入了一个AsyncTask类,使用它就可以非常灵活方便地从子线程切换到UI线程,我们本篇文章的主角也就正是它了. Asyn…
前言:由于最近在做SDK的功能,需要设计线程池.看了很多资料不知道从何开始着手,突然发现了AsyncTask有对线程池的封装,so,就拿它开刀,本文将从AsyncTask的基本用法,到简单的封装,再到任务队列分析,最后自定义线程池. 1.概念 Android 中的异步任务常用的一种方式是:Handler + Thread 组合来实现的.Thread 负责子线程的耗时操作,Handler 负责线程间的通信,用的最多的当属子线程和主线程通信. Android 为了简化操作,提供了 AsyncTask…
.对于耗时的操作,我们的一般方法是开启“子线程”.如果需要更新UI,则需要使用handler 2.如果耗时的操作太多,那么我们需要开启太多的子线程,这就会给系统带来巨大的负担,随之也会带来性能方面的问题.在这种情况下我们就可以考虑使用类AsyncTask来异步执行任务,不需要子线程和handler,就可以完成异步操作和刷新UI. 3.AsyncTask:对线程间的通讯做了包装,是后台线程和UI线程可以简易通讯:后台线程执行异步任务,将result告知UI线程. 4.使用方法:共分为两步,自定义A…
这里有两种解释的方法,各有侧重点: 第一种解释: Async Task 简介:AsyncTask的特点是任务在主线程之外运行,而回调方法是在主线程中执行,这就有效地避免了使用Handler带来的麻烦  AsyncTask是抽象类.AsyncTask定义了三种泛型类型 Params,Progress和Result. Params 启动任务执行的输入参数,比如HTTP请求的URL. Progress 后台任务执行的百分比. Result 后台执行任务最终返回的结果,比如String. AsyncTa…
1.对于耗时的操作,我们的一般方法是开启“子线程”.如果需要更新UI,则需要使用handler 2.如果耗时的操作太多,那么我们需要开启太多的子线程,这就会给系统带来巨大的负担,随之也会带来性能方面的问题.在这种情况下我们就可以考虑使用类AsyncTask来异步执行任务,不需要子线程和handler,就可以完成异步操作和刷新UI. 3.AsyncTask:对线程间的通讯做了包装,是后台线程和UI线程可以简易通讯:后台线程执行异步任务,将result告知UI线程. 4.使用方法:共分为两步,自定义…
前言: 最近在学习总结Android的动画效果,当学到Android属性动画的时候大致看了下源代码,里面的AnimationHandler存取使用了ThreadLocal,激起了我很大的好奇心以及兴趣!查阅了一下资料发现Android最重要的Handler消息机制里面的Looper存储也是采用ThreadLocal,开源框架EventBus存储当前线程下的发送事件队列状态也是采用ThreadLocal,那么为何要使用ThreadLocal呢?ThreadLocal是什么呢?它能解决什么样的问题呢…
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来处理有关网络的操作.虽然代码看上去不是很复杂,但仍有很多地方有疑惑.所以研读了一下API文档,在这里把我学到的和练习的代码展示出来.如有错误,欢迎指出! 一.关于AsyncTask的<Params, Progress, Result> 在创建AsyncTask的子类时,必须给出这三个具体的类型值,尖括号是泛型的意思.我不太理解API文档的解释,但往下看 doInBackgroun…
reference to : http://blog.csdn.net/a910626/article/details/45599133 我看了一下asyncTask是从LV3开始,AsyncTaskLoader是从LV11开始的. 是不是说LV11以后,AsyncTaskLoader可以替代AsyncTask了? 还有,在Android开发里,异步加载的方法很多,普遍流行和最常用的是那种方法? 是不是如果想带有进度展示的话,那AsyncTask是首选? 在statckOverflow里查了一下…
最近发现这个rxandroid挺火的,我就研究了一下,还真的挺不错. 首先在说之前可能很多人会和我刚刚学习的时候一样有很多疑问,如: 1:rxandroid是什么东西? 2:rxandroid能干嘛? 3:rxandroid为什么有着么多人用? 4:rxandroid怎样用? 什么是rxandroid呢? 也许很多人奇怪,android前面前面多了个rx?是个什么东西,兄弟,不要急.rx说的简单一点就是响应式编程的意思.rxandroid是在rxJava拓展而来的.当然既然有rxjava,那也有…
什么是异步任务? 异步任务就是开一个子线程,然后让它去跑,它跑完了就会回来告诉你说,它跑完了,这是结果.这和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相信大家都不陌生,它是为了简化异步请求.更新UI操作而诞生的.使用它不仅可以完成我们的网络耗时操作,而且还可以在完成耗时操作后直接的更新我们所需要的UI组件.这使得它在android开发中成为炙手可热的网络请求工具类. 而今天我们就以源码分析的形式来彻底的学习下它的实现过程. 首先,我们先看看AsyncTask的定义形式: public abstract class AsyncTask<Params, Progress, Result> { } 首先AsyncTask它是一个…
//AsyncTask从本质上讲,是对ThreadPool和handler的封装. 在学习线程池相关的知识时,看到书中提到AsyncTask的实现中使用到了ThreadPool,于是把源码翻了出来, 源码并不长,顺便分析了一下.小白挑战,大牛勿喷(好像大牛也不会看到...) 成员变量的解析 我打算先把成员变量分析一下(AsyncTask源码不是很复杂,可以这么做,算是特殊情况吧),算是为后面分析AsyncTask的工作流程做铺垫. 线程池 THREAD_POOL_EXECUTOR //cpu核心…
开始进入正题,我们都知道,Android UI是线程不安全的,如果在子线程中尝试进行UI操作,程序就有可能会崩溃.相信大家在日常的工作当中都会经常遇到这个问题,解决的方案应该也是早已烂熟于心,即创建一个Message对象,然后借助Handler发送出去,之后在Handler的handleMessage()方法中获得刚才发送的Message对象,然后在这里进行UI操作就不会再出现崩溃了. 这种处理方式被称为异步消息处理线程,虽然我相信大家都会用,可是你知道它背后的原理是什么样的吗?今天我们就来一起…
前面说了如何操作AsyncTask,这篇我们来说一下如何关闭AsyncTask. 有人就问了:为什么要关闭AsyncTask呢?很简单,AsyncTask 是在后台执行耗时操作(获取数据),当你离开当前页面或者结束进程时,也就是跳到你另一个页面不需要当前页面的数据.如果不关闭,其它页面无法显示数据,因为后台还在获取当前页面的数据,也可理解为堵塞. 现在我们再运行一下上一篇博客里的app: 我们点击Back后再次进入App,点击产看数据 我们会发现,再次点击时,数据没有立刻加载,而是过了一会才加载…
这里说有设计思想是我根据查看Android源代码提炼出来的代码逻辑,所以不会跟Google工程师的原始设计思想100%符合(也有可能是0%),但是本文一定可以帮助你理解AsyncTask,也可能有一些你以前没有发现的内容. 大家都知道,Android的主线程(又叫UI线程,线程ID为1)有一些限制策略,使得主线程有些事做不了,比如访问网络就不允许,否则就是报,但在2.3之后的版本,你可以通过添加以下代码更改其限制策略,从而强制使得主线程可以访问网络: 复制代码代码如下: if (android.…
对于Android为什么要使用多线程,因为从Android4.0之后,谷歌规定了网络操作不允许放在主线程中执行,由此就有了多线程的机制,有个JAVA学习经验的朋友一定知道多线程指的是什么,简单来讲就是,在JAVA程序中,main()函数开启的即为这个程序的主线程,而我们为了完成一些耗时操作又不想影响到主线程的执行,这是我们往往通过Thread对象创建一个子线程来执行.简单的说,一个程序只有一个主线程,可以有多个主线程.在Android世界中也是这样,Android属于单线程模型,耗时操作必须放在…
1 ) AsyncTask实现的原理,和适用的优缺点 AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(可以通过接口实现UI进度更新),最后反馈执行的结果给UI主线程. 使用的优点: l  简单,快捷 l  过程可控 使用的缺点: l  在使用多个异步操作和并需要进行Ui变更时,就变得复杂起来. 2 )Handler异步实现的原理和适用的优缺点 在Handler 异步实现时,涉及到 Handler, L…
前言 AsyncTask是个好东西,能处理绝大多数应用线程和更新UI的任务,由于其内部使用了静态线程池,如果你有一堆异步任务(例如全局定时更新数据.同一个Activity中多个AsyncTask同时执行)其中有不能马上执行完的情况(例如网络请求超时),那就糟了,其他任务都还等着呢,就会出现任务卡住的情况.此时就需要直接上Thread了,这里参考AsyncTask的API封装了一个ThreadTask,便于必要时代码替换,欢迎交流! 声明 欢迎转载,但请保留文章原始出处:) 博客园:http://…
每一个学习Android的同学都会觉得Handler是一个神奇的东西,我也一样,开始我以为我懂了Handler的机制,后来发现自己是一知半解,昨天想想,我能否自己实现一个Handler,让子线程与ActivityUI线程通信,如果能够自己实现一个Handler,那必然是对Handler的消息传递机制理解渗透了. 一.引入 Android的UI是单线程控制的,实际上,成功的UI框架都是基于单线程的,多线程的UI框架往往因为解决并发和死锁的艰难而胎死腹中.只有UI线程能控制界面控件,但我们总是希望子…
AsyncTask和Handler对比 1 ) AsyncTask实现的原理,和适用的优缺点 AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(可以通过接口实现UI进度更新),最后反馈执行的结果给UI主线程. 使用的优点: l  简单,快捷 l  过程可控 使用的缺点: l  在使用多个异步操作和并需要进行Ui变更时,就变得复杂起来. 2 )Handler异步实现的原理和适用的优缺点 在Handler…
http://blog.csdn.net/initphp/article/details/10392093 安卓开发笔记系列(43)  在开发Android应用时必须遵守单线程模型的原则: Android UI操作并不是线程安全的并且这些操作必须在UI线程中执行.在单线程模型中始终要记住两条法则:  1. 不要阻塞UI线程  2. 确保只在UI线程中访问Android UI工具包        当一个程序第一次启动时,Android会同时启动一个对应的主线程(Main Thread),主线程主要…