AsyncTask的三个属性值和四个步骤

最近学到用AsyncTask来处理有关网络的操作。虽然代码看上去不是很复杂,但仍有很多地方有疑惑。所以研读了一下API文档,在这里把我学到的和练习的代码展示出来。如有错误,欢迎指出!

一、关于AsyncTask的<Params, Progress, Result>

在创建AsyncTask的子类时,必须给出这三个具体的类型值,尖括号是泛型的意思。我不太理解API文档的解释,但往下看

doInBackground(Params...)

publishProgress(Progress...)

onProgressUpdate(Progress...)

onPostExecute(Result)

可以知道它们都是传递给谁的,而圆括号里有...的参数可以理解为数组。

二、AsyncTask的四个步骤

1、onPreExecute():这个方法是在任务开始前进行的,它由UI线程(主线程)调用,即可以进行UI操作。在最后,我会给出Log的打印信息。

2、doInBackground(Params...):这个方法是onPreExecute()完成后,立即在后台进行的,用以执行任务,并将Result传给onPostExecute(Result)。另外,在此期间,可以调用publishProgress(Progress...),这个方法能够传递一些数据给onProgressUpdate(Progress...)。

3、onProgressUpdate(Progress...):在publishProgress(Progress...)被调用之后,此方法会由UI线程调用。所以利用publishProgress(Progress...)和onProgressUpdate(Progress...)就能够做出在加载或读取网络数据时的等待或缓冲的UI效果。我在最后给出的效果图有类似的功能。

4、onPostExecute(Result):在doInBackground(Params...)完成后,由UI线程调用,在这里处理Result。

三、我练习时写的代码

这是启动任务,这里的execute(),可以传进多个参数,如execute(url1,url2,url3)

然后在doInBackground中就可以处理多个任务,publishProgress和onProgressUpdate也类似

四、最终效果图

在确认前,该TextView是空的,在确认后,获取的信息加载出来前,该TextView是显示Loading的,可能gif做得不好,看上去有点怪。另外,在正常情况下,Loading是一闪而过的。我这里是断点调试时,截图做的。

最后是上面介绍的四个方法的Log信息

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持脚本之家!

时间: 2024-09-22 13:11:26

AsyncTask的三个属性值和四个步骤的相关文章

java对象中属性值为空字符串的问题

问题描述 java对象中属性值为空字符串的问题 业务逻辑中需要将对象中为空字符串的属性转换为null,首先我想到是将对象转为一个数组, 然后遍历数组,将""转为 null ,不过这样应该不对,大家给个思路 解决方案 用 反射 获得所有字段的数组,然后遍历判断~~~~~~ 解决方案二: 你为什么还要遍历呢,你前台传过来的数据先处理再装对象,这样才对 解决方案三: 传到后台后,先判断 if("".eques(name)){ name=null; } object.set

解读:ALT属性值对搜索引擎还有效吗

在网上看到了很多讨论图片ALT属性值优化对搜索引擎还有没有用的话题,因为当初设置ALT属性值初衷就是因为搜索引擎不能有效识别图片而设置的,并不是为了用户体验,如果ALT属性值不再有效,那我们可以不用对ALT设置值,可以为编辑和开发节省很多时间.下面我们通过实例来验证一下ALT属性值还有没有效: 首先,通过模拟搜索引擎蜘蛛来验证一下,下面通过华强电子网首页的一张图片为例.   以上是在网上寻找到的一个案例,ALT的属性值为"华强北电子市场价格指数周走势",这个页面的源代码中只有这样一个词

深入理解CSS属性值语法

万维网联盟(W3C) 使用了一套特别的语法来定义 CSS 的属性值,能让所有的 CSS 属性都用.如果你曾看过 CSS 规范,你可能已经见过这套语法了.就像 border-image-slice 的语法 ,让我们看看: <'border-image-slice'> = [<number> | <percentage>]{1,4} && fill? 如果你不知道这些符号以及它们如何工作的话,这套语法可能非常难理解.然而,这值得花时间来学.如果你理解 W3C

三种属性操作性能比较:PropertyInfo + Expression Tree + Delegate.CreateDelegate

在<上篇>中,我比较了三种属性操作的性能:直接操作,单纯通过PropertyInfo反射和IL Emit.本篇继续讨论这个话题,我们再引入另外两种额外的属性操作方式:Expression Tree(这和IL Emit基本一致)和通过Delegate的静态方法CreateDelegate创建相应的委托进行属性的赋值和取值.[源代码从这里下载] 目录 一.定义测试相关的接口.类型和委托 二.通过Expression Tree的方式创建用于属性操作的委托 三.编写属性赋值操作测试方法 四.编写属性取

为什么在xml文件的根节点加了一个属性值就读取不到其子节点的数据了呢

问题描述 为什么在xml文件的根节点加了一个属性值(showStyle="T")就读取不到其子节点的数据了呢<?xmlversion="1.0"encoding="utf-8"?><huashuaishowStyle="T"><CustomerServiceCId="1"><Id>1</Id><UserName>张三</UserN

css display属性值求解

问题描述 css display属性值求解 display属性值求解 run-in:根据上下文决定对象是内联对象还是块级对象.(CSS3) box:将对象作为弹性伸缩盒显示.(伸缩盒最老版本)(CSS3) inline-box:将对象作为内联块级弹性伸缩盒显示.(伸缩盒最老版本)(CSS3) flexbox:将对象作为弹性伸缩盒显示.(伸缩盒过渡版本)(CSS3) inline-flexbox:将对象作为内联块级弹性伸缩盒显示.(伸缩盒过渡版本)(CSS3) flex:将对象作为弹性伸缩盒显示.

javascript-js:通过.parentNode 获得父元素,然后如何获得获得父元素的属性值?

问题描述 js:通过.parentNode 获得父元素,然后如何获得获得父元素的属性值? var imgDiv = document.getElementById(divID); var obj = imgDiv.parentNode; 这样获得imgDiv 的父元素,然后我想继续获得父元素的宽度和高度,求大神指点,谢谢 解决方案 你的obj就是父元素,用obj.width,obj.heigth 解决方案二: 少了style,obj.style.width. 解决方案三: 获取父元素之后,通过o

如何取出list里面的对象的多个属性值,并放在表格的td中

问题描述 如何取出list里面的对象的多个属性值,并放在表格的td中 解决方案 使用JSTL表达式<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 因为是list集合,所有需要用进行循环,具体如下. 一,导包(MyEclipse内置函数包) <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix=

XML获取节点的属性值.在线等.

问题描述 下面的XML文档.请问如何获得属性值.我想获得ABCDE.用C#怎么实现呢.<?xmlversion="1.0"?>-<Documents><DocumentName="A"DocType="B"Content="C:"Executive="D"Table="E"/><DocumentName="F"DocType=