文档章节

Android第三十八天

黄晓磊
 黄晓磊
发布于 2016/07/21 08:07
字数 745
阅读 36
收藏 0
点赞 0
评论 0

1、定义

        异步任务类,在类中实现异步操作,并提供回调方法反馈当前异步执行的程度,最后反馈 的结果提供给UI主线程。

        <1>Android线程

                (1)MainThread主线程(也称UI线程):应用启动时创建,处理与UI相关事情,如点击事件、数据更新;

                (2)WorkerThread子线程:Android4.0之后UI线程不能访问网络资源或执行耗时操作,必须开启子线程;

        <2>主、子线程必须遵循的两条规则:

                (1)Do    not    block    the    UI    thread.(主线程不能被阻塞) 

                (2)Do    not    access    the    Android    UI    toolkit    from    outside    the    UI    thread.(非主线程不能更新UI)

        <3>回调方法

                (1)必须实现的方法

                                doInBackground(Params...params)后台执行的任务;在子线程中调用的方法,要做耗时操作就在这个方法中执行;

                                doPostExecute(Result result)任务完成,UI线程执行;在主线程中执行,在doInBackground之后调用,doInBackground返回的结果就到了这个方法中;

                (2)其他实现方法

                                onPreExecute()后台任务开始之前的准备工作,UI线程执行;在主线程中执行,在doInBackground之前,在这个方法中一般做耗时操作之前的准备工作;

                                onProgressUpdate(Progress... values) 当前执行的进度,UI主线程执行;在主线程中运行,用来发布进度值;作用:一般用于更新UI中的ProgressBar进度条;用法:必须在doInBackground的方法体中调用 publishProgress(Progress... values)方法

                                onCancelled() 取消任务,任务正在执行的情况;在主线程中执行。取消下载任务,doInBackground()方法就不会再继续执行;在启动异步任务的类中调用取消异步任务的方法 XXX.cancel(true);

        <4>AsyncTask的一般用法:

                (1)创建类,继承AsyncTask,并指定三个泛型

 
  1. public class ImgAsy extends AsyncTask<String, Integer, Bitmap>

                                第一个泛型:Params,执行下载任务的地址类型,一般是请求的URL或String;决定了doInBackground()方法的参数类型;

                                第二个泛型:Progress,显示进度值得类型,常用类型是Integer;决定了onProgressUpdate()方法的参数类型;

                                第三个泛型:Result,下载线程执行完成后返回的结果,常用Bitmap;决定了doInBackground()方法的返回值类型,决定了onPostExecute的参数类型

                (2)重写两个必要的方法

                (3)重写可选的方法

                (4)在UI线程中,实例化AsyncTask对象,并将UI控件作为构造参数传入;

                (5)在UI线程中,执行AsyncTask对象的execute(...)方法,开始执行异步任务;

                (6)异步开始执行后,执行AsyncTask对象的cancel(true)方法,停止异步任务;

        <5>使用AsyncTask必须遵守的准则:

                (1)三个泛型的使用位置;

                (2)Task的实例必须在UI  thread中创建;

                (3)execute方法必须在UI  thread中调用;

                (4)该Task只能被执行一次,否则多次调用时将会出现异常

 

© 著作权归作者所有

共有 人打赏支持
黄晓磊
粉丝 21
博文 51
码字总数 45039
作品 0
成都
Android第二十八天

一:Servlet (服务器小程序) 实现Servlet的类必须继承HttpServlet类,还要复写doGet(xxx), doPost(xxx)。(或者复写doService(xxx),但不常用。) Servlet的生命周期: 加载 初始化 服务 卸载 ...

黄晓磊 ⋅ 2016/07/07 ⋅ 0

用于 APP 测试的 10 大 Android 设备

本文由码农网 – 小峰原创翻译,转载请看清文末的转载要求,欢迎参与我们的付费投稿计划! 我们的团队密切关注着移动世界的趋势,以便可以提供所有有关变化的最紧密和最重要的信息。春天恰好...

码农网 ⋅ 05/03 ⋅ 0

安卓厂商满嘴跑火车!你收到可能是假安全补丁

一直以来,安卓系统的碎片化都是谷歌心中会呼吸的痛。不但系统升级成了老大难,如何推送安全补丁也让谷歌挠头,毕竟数十家制造商、数百家运营商和数千款设备排列组合起来可不是个小数目。 如...

大壮旅 ⋅ 04/13 ⋅ 0

Android文档水印之PDF水印

随着移动终端办公化的普及,在Android手机中阅读文档已经是很普遍的事情了,但是有些文档可能是涉及到一些企业机密与敏感的内容,不希望随意扩散出去。为了防止重要的文档被截屏或者拍照而泄...

sunrongxin.py ⋅ 2017/03/05 ⋅ 0

[译] 从Android Studio 切换至 D8 dexer

原文地址:Android Studio switching to D8 dexer 原文作者:Jeffrey van Gogh 译文出自:掘金翻译计划 本文永久链接:github.com/xitu/gold-m… 译者:Starrier 校对者:wavezhang 更快、更...

Android_开发者 ⋅ 05/28 ⋅ 0

31 天,从浅到深轻松学习 Kotlin

这篇文章介绍开发者用 31 天学习 Kotlin 的心得,深入浅出地介绍了 Kotlin 的一些基本特性以及高级用法,对处于不同阶段的 Kotlin 开发者来说,在提高开发效率和了解 Kotlin 提供一些参考,希...

Android_开发者 ⋅ 05/30 ⋅ 0

Training的第二十八天

今天学习的是if-else-if语句,在以前我写的一些小程序中发现自己做的想以下这个例子的那样: 这样写的程序层层嵌套,看起来也很复杂麻烦,所以一般不建议这样写。 一般用到是if()else if(...

灵感-LG ⋅ 2014/08/26 ⋅ 0

Android Studio工具修理集

本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! 1、Common依赖项目找不到。因为主项目没有引进setting.gradle 2、从Eclipse移植到AS,最重要的两个文件是setting.gradle和...

liuzxgeek ⋅ 2016/07/22 ⋅ 0

浅入浅出 Android 安全:第三章 Android 本地用户空间层安全

第三章 Android 本地用户空间层安全 来源:Yury Zhauniarovich | Publications 译者:飞龙 协议:CC BY-NC-SA 4.0 本地用户空间层在 Android 操作系统的安全配置中起到重要作用。 不理解在该...

apachecn_飞龙 ⋅ 2016/12/02 ⋅ 0

转:一套代码iOS、Android两端运行,Google Flutter意味着什么?

原文:https://www.toutiao.com/a6569388465538990600/?ttfrom=weixin&utmcampaign=clientshare×tamp=1529580533&app=newsarticle&utmsource=weixin&iid=35476649324&utmmedium=toutiao......

鸿蒙无上至尊 ⋅ 06/22 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

在java中读取文件(也支持读取jar中的文件)

getClass().getResourceAsStream("文件名.格式"); 这个方法是用于获取当前类所在目录下的文件;需要将文件放到和当前类同一个包下面 比如我有个类在 com.test这个包下, 要读取一个test.jpg的图...

太黑_thj ⋅ 52分钟前 ⋅ 0

CentOS 7 源码编译安装 MySQL 5.7记录

没事瞎折腾,本来可以yum安装,却偏偏去要编译源码。 1. 安装依赖包 1). 安装cmake等依赖 # yum install cmake ncurses ncurses-devel bison bison-devel 2). 安装boost 1.59.0 # wget htt...

admin_qing ⋅ 54分钟前 ⋅ 0

tcp/ip详解-链路层

简介 设计链路层的目的: 为IP模块发送和接收IP数据报 为ARP模块发送ARP请求和接收ARP应答 为RARP模块发送RARP请求和接收RARP应答 TCP/IP支持多种链路层协议,如以太网、令牌环往、FDDI、RS-...

loda0128 ⋅ 今天 ⋅ 0

spring.net aop代码例子

https://www.cnblogs.com/haogj/archive/2011/10/12/2207916.html

whoisliang ⋅ 今天 ⋅ 0

发送短信如何限制1小时内最多发送11条短信

发送短信如何限制1小时内最多发送11条短信 场景: 发送短信属于付费业务,有时为了防止短信攻击,需要限制发送短信的频率,例如在1个小时之内最多发送11条短信. 如何实现呢? 思路有两个 截至到当...

黄威 ⋅ 昨天 ⋅ 0

mysql5.7系列修改root默认密码

操作系统为centos7 64 1、修改 /etc/my.cnf,在 [mysqld] 小节下添加一行:skip-grant-tables=1 这一行配置让 mysqld 启动时不对密码进行验证 2、重启 mysqld 服务:systemctl restart mysql...

sskill ⋅ 昨天 ⋅ 0

Intellij IDEA神器常用技巧六-Debug详解

在调试代码的时候,你的项目得debug模式启动,也就是点那个绿色的甲虫启动服务器,然后,就可以在代码里面断点调试啦。下面不要在意,这个快捷键具体是啥,因为,这个keymap是可以自己配置的...

Mkeeper ⋅ 昨天 ⋅ 0

zip压缩工具、tar打包、打包并压缩

zip 支持压缩目录 1.在/tmp/目录下创建目录(study_zip)及文件 root@yolks1 study_zip]# !treetree 11└── 2 └── 3 └── test_zip.txt2 directories, 1 file 2.yum...

蛋黄Yolks ⋅ 昨天 ⋅ 0

聊聊HystrixThreadPool

序 本文主要研究一下HystrixThreadPool HystrixThreadPool hystrix-core-1.5.12-sources.jar!/com/netflix/hystrix/HystrixThreadPool.java /** * ThreadPool used to executed {@link Hys......

go4it ⋅ 昨天 ⋅ 0

容器之上传镜像到Docker hub

Docker hub在国内可以访问,首先要创建一个账号,这个后面会用到,我是用126邮箱注册的。 1. docker login List-1 Username不能使用你注册的邮箱,要用使用注册时用的username;要输入密码 ...

汉斯-冯-拉特 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部