00:00
大家看啊,现在呢,我们去做一个简单的测试用例,这个测试用例其实就是我们前面的下载的这个功能。我们下载是不是也分为三步啊。先要显示提示视图是吧,接着去下载,接着是不是要有一个。结果呀,对吧,好。嗯,有这样的一个。效果啊,我们要去做一下来。跑马拉跑一下。退出。就这一个对吧。好,这个呢,我们不用完全自己写了,我们把以前的给它打开。打开以后来看一下我们前面做这个功能是在哪做的。应该在这吧。APP network,它里面呢,有这样一个类在做这样一个事。
01:03
就那时候我们也说的是主要分为三步去做好。来啊,我们拿它。因为有些代码拷贝一下它的就行,主要是这个地方呢,我们做流程来把它打开。Second task。啊。我点击这个button就会启动这个方法。在这里面我们做什么呢?我们启动义务任务。处理那启动任务,首先你得创建义务任务对象吧。一个a think。Pass了吧。他。好,这个地方是不是有三个半型需要指定呢?那你现在知道什么类型吗?你搞不清楚对吧,搞不清楚先指定为什么呢,看着啊。这个没用吧。
02:01
用吗?你们只用个小写的对不对。来看一下。这是一个类。啊,这一个类呢,大家看到啊,我们以前呢,我们说VO是什么意思。啊,也就是说看我写一个,我写一个V的就代表是没有返回值对吧。其实。嗯,那个说法呢,不是特别准确,这其实也是一个基本数据类型。因为这一个呢,是它所对应的,你可以把它看成对应的一个什么呢?包装类。这是一个,这相当于类似于我们的inte呀,我们的什么float呀,什么double呀,这一系列的,我们那个看到我们的int类型不是对应吗?对吧,基本数据类型是不是都有包装类啊。好,下面啊,包括我们的float呀,是吧,是不是大写的float。
03:00
那我们的VO。他对,一个大写的过的。那有人可能就说了。那它的对象到底代表什么呢?啥也不代表。你半型的类型里面你是不能写那个。什么基本数据类型的吗?你能写吗?不然你最多也只能写什么。也就是说只能写对象类型对不对?啊,那我这个地方我不确定啊,写成什么呢。Word也是没有返回值,那没有返回值没有类型的话,那那你写个小写的word是不行的,必须写个什么呢,大写的word。啊写好了,像它呢,它里面。有一个抽象方法。Do in background好,我的对象创建以后,你说我的任务启动了吗?
04:01
没有怎么启动。别。Execute。大家看,由于我生明的是未的,那就是没有没有数据,没有数据,你说我这里面传数据吗。不团。对吧,就这么样了。大家看它返回的身边的是不是VO呀,V你返回一个空,只返回一个long就行。啊。下面我们说过了一个一,它分为三步,首先第一步干嘛呀。主线程显示。提示是读的吧。平时多来用哪个方法呢?Pray。Ex。嗯,在这里面做好了第二步。什么?分线程是联网请求啊,联网请求第三步。
05:03
在哪个线呢?主线程根形界面。就这样子吧。好。那我们呢?就去做这三步啊,大家看啊。第一步是要在主线中,我们来看这里面。前面只要是在分线程之外的前面是不是都可以放在。第一步呀。就这个准备工作,你都可以,所有的通通都放到这个里面来。那这地方就有一些小问题,我们来看一下啊。首先这个地方这个Z不对。这个意思呢,不是context类型了。写什么?A task as again?This,美女吧?嗯,好了,在这里面呢,需要有一个成员变量。我把这个成员变量呢,来给它保存一下。来可以定在外面。
06:02
啊,我可以同时呢,把这个也定义成成变量得了。把他也盯在嘴里了。因为在另外一个方法里面去操作。那这个时候就不需要发了啦。就这样啊。这个里面呢,我们在这前面有个准备是显示提示视图,这里面是不是准备了一个对象吧。好了,那第一步就做好了。下面来看第二步。第二步,来。就它这里面所有分线程。啊,干的活在这一步啊。我都在这里面做一下,看见C,但这个不用啊,这个是切换到主线上去做了。来,把他捞过来。这里面是不是有异常啊。啊,异常呢,需要给他嗯补货了。
07:06
给他踹起来。Surroundway。刷卡。把它整大点。可以了吧啊。弄完它了以后,下面啊,我们继续来看。第三步。第三步,我们的第三步,第三步高了,跑哪去了,我的方法了。还没写是吧,对。来我们的第三步,右手方法来着。Onpo。Execute。这是我们第三步啊好,第三步做什么呢。是不是就这两个字。把这个复制过来。对吧,需要这样一个方法吧。啊,把这个方法拷贝过来。
08:03
嗯,这样就好了。在这里面呢,我们就用a task来去做了一下它。好,还有几个方法没用到。哪个方法没用到了它。他们俩。他们俩怎么用呢?大家看着我啊。在这个里面我们在更新进度,现在在哪个线上执行呢。分线程是吧,这个更新进度为什么能在分线程执行呢?不是违背了我们说不能在分享更新界面吗?啊,我们说过他这个内部是不是在用什么呀,Handler最终是不是要用handler在更新界面呢。对吧,真正在更新的时候,他就看着来去做的,那好了。我们现在假设他不能在分线上执行。
09:02
啊,假设这个显示下载进度这个方法呢,不能再负向之一,那我该怎么做了。我就要利用他给我提供的另外的A了这两个API。首先呢,我们要在分线程去发布一个。当前的进度。来看发布一下来看啊。我把这一个给他住了。发布一下啊,在分析发布当天记录怎么发布呢。Publish progress。传什么字?大家想我要不要?我是不是要把这个给传过去啊。那关键是我现在生命的都是Y的,没办法传值。我想是不是想传的是这个人呢?但是因为我们现在声明的时候,我开始声明的时候,这里面都是声明成为了。
10:00
你说我得怎么做呀?嗯,你看看在我回答下面这里面这一个进度,我现在类型是不是生成Y的,那就没法传知,关键我现在想藏一个数字,你说我怎么办。我把它是不是改一下那个类型呢。该怎么了?对吧,因为我要是不是发布的是一个整数啊。是个音频节吧,好。来看啊,我有了这个阴体节以后。你看我我这个时候我发布的时候发布论没问题吧。来看可以。你看着吧,我这一洗。它是不是个因体检的参数告诉我了。我传一个好,我这一发布会导致于谁执行呢?大概呢,有这样一个方法,它是个回调啊,在什么线上这些。主线程执行。啊,也就是说我还需要去重启一个方法吧。
11:03
来重写一下,叫on进度。Progress update。你说这个地方。是怎么个意思啊,当什么?这个不要啊,当进度更新的时候对不对。我刚才不发布了镜头吗?啊,有这样一个方法,好,那我怎么做。PD点啊progress,它这个地方我发布的时候是不是传播了一个参数啊。我从中是不是可以取出?要更新的进度吧,谢谢。是不是零呢啊,这个值要怎么要怎么处理呢,实际上就把这个拿过来。拿过来以后,它是不是要去指定一个刃啊,这个N等于多少啊。Venus。你。就好了。
12:01
对吧。看着吧。啊,在主线程执行,在什么之后执行呢?跟大家说一下,在执行完它之后就执行。对吧。就这样的一个好。现在我们来看一下,看看行不行啊,先看一下我的那个。权限是不是都加上了,还有一个权限,有别的权限吗?还有一个权限。什么学院?是不是操作SD卡呀。Right。爸爸。就写往SD卡里面操作的一个权限。好啦。啊。我们现在来看一下,看看行不行。
13:02
好,走。是不是可以啊?这是我的吗?应该是的吧。这个金条是老样式的一个金条。这个启动了,我们这个。安装的界面对吧,可以进行安装。就不可以。嗯,没有问题。这里面我们就把a task给大家用了,简单的用了一下。好了,还有一个小东西给给大家看一下。
14:03
就是它的一个过程。就我们呢,创建一个task以后,调用它的方法就是启动一个异步任务。那它是一个什么样的流程呢?在这个地方分为两个线程,一个是UI线程,一个是work线程,比如说主线程和分线程。先它会在主线程里面去执行。接着去在分线程里面去执行doing background。这一个执行的时间可能会比较长,对吧。好。看这是什么意思,在它执行的过程中。你是要发布进度啊。这一个方法在哪个线程执行?分线直行的对不对。好。那会导致于。
15:01
On progress update。在主线上执行。就是说当我的这整个方法执行完了以后。它会在主线程去执行。对吧。就是这样一个流程,其实也比较简单。大家就去重写这些方法。对应的去填空就可以。把这个大家好好的去做一下啊。后面呢,我们在我们的手机微视项目里面会反复的用到这一些技术啊。
我来说两句