android 异步加载框架 原理完全解析
一、手写异步加载框架MyAsycnTask(核心原理)
1.我为大家手写了一个异步加载框架,涵盖了异步加载框架核心原理。
MyAsycnTask.java
import android.os.Handler; public abstract class MyAsycnTask { private Handler handler = new Handler(){ public void handleMessage(android.os.Message msg) { postTask(); }; }; /** * 在子线程之前执行的操作 */ public abstract void preTask(); /** * 在子线程之中执行的操作 */ public abstract void doinBack(); /** * 在子线程之后执行的操作 */ public abstract void postTask(); /** * 执行 */ public void execute(){ preTask(); new Thread(){ public void run() { doinBack(); handler.sendEmptyMessage(0); }; }.start(); } }
2.调用手写异步加载框架
//异步加载框架 new MyAsycnTask() { @Override public void preTask() { //<span style="font-family: Arial, Helvetica, sans-serif;">在子线程之前执行的操作</span> } @Override public void postTask() { //在子线程之中执行的操作 } @Override public void doinBack() { //在子线程之后执行的操作 } }.execute();
二、系统异步加载框架AsycnTask
系统异步加载框架AsycnTask三个参数:提高兼容性
参数1:子线程执行所需的参数
参数2:显示当前的加载进度
参数3:子线程执行的结果
调用系统异步加载框架
new AsyncTask<String, Integer, String>(){ //在子线程之中执行的操作 @Override protected String doInBackground(String... params) { // TODO Auto-generated method stub return null; } //在子线程之前执行的操作 @Override protected void onPreExecute() { // TODO Auto-generated method stub super.onPreExecute(); } //在子线程之后执行的操作 @Override protected void onPostExecute(String result) { // TODO Auto-generated method stub super.onPostExecute(result); } //显示当前加载进度 @Override protected void onProgressUpdate(Integer... values) { // TODO Auto-generated method stub super.onProgressUpdate(values); } }.execute();
三、补充
1.AsyncTask : 面试必问,异步加载框架的原理,手写一个异步加载框架,百度面试:异步加载在执行多少个的时候就跟new没有区别,5个
android 异步加载框架 原理完全解析的更多相关文章
- Android图片加载框架最全解析(六),探究Glide的自定义模块功能
不知不觉中,我们的Glide系列教程已经到了第六篇了,距离第一篇Glide的基本用法发布已经过去了半年的时间.在这半年中,我们通过用法讲解和源码分析配合学习的方式,将Glide的方方面面都研究了个遍, ...
- Android图片加载框架最全解析(二),从源码的角度理解Glide的执行流程
在本系列的上一篇文章中,我们学习了Glide的基本用法,体验了这个图片加载框架的强大功能,以及它非常简便的API.还没有看过上一篇文章的朋友,建议先去阅读 Android图片加载框架最全解析(一),G ...
- Android图片加载框架最全解析(八),带你全面了解Glide 4的用法
本篇将是我们这个Glide系列的最后一篇文章. 其实在写这个系列第一篇文章的时候,Glide就推出4.0.0的RC版了.那个时候因为我一直研究的都是Glide 3.7.0版本,再加上RC版本还不太稳定 ...
- Android图片加载框架最全解析(七),实现带进度的Glide图片加载功能
我们的Glide系列文章终于要进入收尾篇了.从我开始写这个系列的第一篇文章时,我就知道这会是一个很长的系列,只是没有想到竟然会写这么久. 在前面的六篇文章中,我们对Glide的方方面面都进行了学习,包 ...
- Android图片加载框架最全解析(五),Glide强大的图片变换功能
大家好,又到了学习Glide的时间了.前段时间由于项目开发紧张,再加上后来又生病了,所以停更了一个月,不过现在终于又可以恢复正常更新了.今天是这个系列的第五篇文章,在前面四篇文章的当中,我们已经学习了 ...
- Android图片加载框架最全解析(四),玩转Glide的回调与监听
大家好,今天我们继续学习Glide. 在上一篇文章当中,我带着大家一起深入探究了Glide的缓存机制,我们不光掌握了Glide缓存的使用方法,还通过源码分析对缓存的工作原理进行了了解.虽说上篇文章和本 ...
- Android图片加载框架最全解析(三),深入探究Glide的缓存机制
在本系列的上一篇文章中,我带着大家一起阅读了一遍Glide的源码,初步了解了这个强大的图片加载框架的基本执行流程. 不过,上一篇文章只能说是比较粗略地阅读了Glide整个执行流程方面的源码,搞明白了G ...
- Android图片加载框架最全解析(一),Glide的基本用法
现在Android上的图片加载框架非常成熟,从最早的老牌图片加载框架UniversalImageLoader,到后来Google推出的Volley,再到后来的新兴军Glide和Picasso,当然还有 ...
- Android 异步加载神器Loader全解析
在之前呢,我们经常会有这种需求,比如在某个activity,或者某个fragment里面,我们需要查找某个数据源,并且显示出来,当数据源自己更新的时候,界面也要及时响应. 当然咯,查找数据这个过程可能 ...
随机推荐
- Java是目前最广泛的_______编程语言
计算机网络 注意:在配置环境变量时,classpath是为找文件服务的
- 4、C#进阶:MD5加密、进程、线程、GDI+、XML、委托
MD5加密 将字符串进行加密,无法解密.网上的解密方式也都是在库里找,找不到也没有. 1 protected void Page_Load(object sender, EventArgs e) 2 ...
- Hbase资料汇总
1.hbase api http://blog.csdn.net/u010967382/article/details/37878701
- calculator
#include <stdio.h> #include <stdlib.h> typedef enum { FALSE = , TRUE }BOOL; void calcula ...
- Portable Basemap Server:多数据源多客户端的底图服务器
Portable Basemap Server:多数据源多客户端的底图服务器 [poll id=”1″]2014.3.8更新v3.1~在线切片转换为MBTiles时,增加RecreateEmptyCa ...
- VFP MSSOAPTOOKIT 使用SOAP Headers
.NET 有如下使用了自定义扩展HEADER来做验证 server.asmx代码 using System;using System.Collections.Generic;using System ...
- 移植milo的全局光照渲染器代码
测试flascc的性能优化程度,http://bbs.9ria.com/thread-162705-1-1.html . 可以对比下猫粮的http://bbs.9ria.com/thread-5820 ...
- MVC Razor基础
@ 可以编写一条C#语句@{} 可以编写一组C#语句@: 将文字内容直接输出到页面上去@() 在一句中将一段C#代码包括起来,证明这一句完整的C#代码 Razor解决路径问题: Html.Action ...
- sscanf与正则表达式(转)
今天翻google reader的时候看到这样一篇文章,介绍的是sscanf的高级用法.直到今天我才知道sscanf是可以直接用正则表达式的,惭愧. 在msdn中sscanf的声明如下 int ssc ...
- 全球首个全流程跨平台界面开发套件,PowerUI分析
一. 首个全流程跨平台界面开发套件,PowerUI正式发布 UIPower在DirectUI的基础上,自主研发全球首个全流程跨平台界面开发套件PowerUI(PUI)正式发布,PowerU ...