Android任务加载网络数据详解及应用.pdfVIP

  • 1
  • 0
  • 约1.02万字
  • 约 4页
  • 2026-02-06 发布于北京
  • 举报

对异步任务加载网络数据的回答:

在Android中了一个异步任务的类AsyncTask,简单来说,这个类中的任务是运行

在线的,并可以将结果放到UI线进行处理,它定义了三种泛型,分别是Params、

Progress和Result,分别表示请求的参数、任务的进度和获得的结果数据。

我之前总结了使用异步任务的有:

1)是因为AsyncTask使用了线程池技术,而且其中的方法很容易实现调用

2)是因为AsyncTask可以调用相关的方法,在开启子线程前和后,进行界面的更新

3)是因为一旦任务多了,不用每次都new新的线程,可以直接使用

如果我们查看文档,异步任务中的方法的执行顺序是这样的:

onPreExecute()【执行前开启】doInBackground()onProgressUpdate()

onPostExecute()

具体的来说,当一个异步任务开启后:

首先会调用onPreExecute()方法:

这个方法在异步执行时立即被UI线程调用,这一步通常用来设置任务,作为任务加

载的准备工作。通常会在这个方法出一个提示框,提示用户加载的进度。

第二个方法doInBackground():

这个方法是执行在子线的。在onPreExecute()执行完后,会立即开启这个方法,在

方法中可以执行耗时的操作。需要将请求的参数传递进来,发送给服务器,并将获取到的数

据返回,数据会传给最后一步中;这些值都将被放到主线也可以不断的传递给下一步

的onProgressUpdate()中进行更新。可以通过不断调用publishProgress(),将数据(或进度)

不断传递给onProgressUpdate()方法,进行不断更新界面。

3)、onProgressUpdate():

这个方法是执行在主线的。publishProgress()在被调用后,才开启的这个方法,它

在何时被开启是不确定的,这个方法用来在操作仍在执行的时候在用户界面显示不

同形式的进度。比如它可以推动进度条进度或者在文本里显示log信息。

4)、onPostExecute():

这个方法是执行在主线的。当的子线程执行完毕后才调用此方法。

doInBackground()返回的结果会作为参数被传递过来。可以在这个方法中进行更新界面的操

作。

最后创建AsyncTask自定义的类,调用execute()方法开启异步任务。

结合项目:

我们在使用异步任务的时候,根据这些原理和步骤就可以了,我们在做项目时会经常使用

到异步任务,比如说我在做的这个项目中,有一个部分,是中的销售期号和截止

时间,我这里使用异步获取这个彩种的当前的销售信息.

我在实现一个功能的时候总会先想到三个问题,我们要实现什么?我们要怎么实现?我们

为什么这样实现?

首先我们要实现什么呢?就是从服务器上获取到当前的销售信息.

那么我们要怎么实现呢?首先我们得在这个类中增加一个获取当前销售信息的

方法,这个方到服务器中去获取数据.然后我先想到的是在这个方法中开启一个线程,在

这个线实现网络的操作,由于我们做了网络的操作,所以在开启这个线程的

时候还要判断一下网络。添加判断网络的代码,我又发现,每次网络的时候,

我们都要实现这几行代码。解决这个问题,我是在getCurrentIssueInfo中,只保留了new

MyThread().start(),而把判断网络这一步放到MyThread中的start()中去.这时候,当在

getCurrentIssueInfo中start的时候,会调用新线程的start()方法,这里的super.start()就

是方法中的start,如果联络连接好则执行这个start,然后调用run方法,执行网络的

操作;否则,就弹出没有网络的提示信息。

这是实现这个功

文档评论(0)

1亿VIP精品文档

相关文档