android什么叫异步请求,怎么实现

 我来答
lingfei68
推荐于2016-01-13 · TA获得超过924个赞
知道小有建树答主
回答量:326
采纳率:0%
帮助的人:150万
展开全部

一.异步请求主要解决线程无法更新UI组件的方案

使用Handler实现线程之间的通信。

    Activity.runOnUiThread(Runnbale)

    View.post(Runnable)

    View.postDelayed(Runnable)

二.ANR异常

    Android默认约定当UI线程阻塞超过20秒将会引发ANR异常。开发者必须牢记,不要在UI线程中执行一些耗时操作

三.AsyncTask抽象类

AsyncTask<Params,Progress,Result>是一个抽象类,通常用于被继承,继承AsyncTask需要指定三个泛型参数:

Params:启动任务执行的输入参数的类型

Progress:后台任务完成进度值得类型

Result:后台执行任务完成后返回结果的类型

四.AsyncTask的特点

    更轻量一些,适用于简单的异步处理,不需要借助线程和Handler即可

五.使用AsyncTask的步骤

  1. 创建AsyncTask的子类,并为三个泛型参数指定类型,如果某个泛型参数不需要指定类型,可将它设为Void

  2. 根据需要,实现AsyncTask的如下方法:

    doInBackground(Params...):后台线程将要完成的任务,可以调用publishProgress(Porgress...values)方法更新任务执行进度。

    onProgressUpdate(Porgress..values):在doInBackground()方法中调用publishPorgress()方法更新任务的执行进度后,就会触发该方法

    onPreExecute():执行后台耗时操作前被调用,通常用户完成一些初始化操作,比如在界面上显示进度条

    onPostExecute(Result result):当doInBackground()完成后,系统会自动调用onPostExecute()方法,并将doInBackground()方法返回的值传给该方法.

  3. 调用AsyncTask子类的实例的execute(Params...params)开始执行耗时任务

六. 使用AsyncTask时必须遵守的规则

    必须在UI中创建AsyncTask的实例

    必须在UI线程中调用AsyncTask的execute()方法

    AsyncTask的onPreExecute()、onPostExecute(Result result)、doInBackground(Params....params)、onProgressUpdate(Progress...values)方法,不应该由程序员代码调用,而是由AsyncTask系统负责调用

    每个AsyncTask只能被执行一次,多次调用将会引发异常。

798427469
2015-06-12 · TA获得超过349个赞
知道小有建树答主
回答量:429
采纳率:50%
帮助的人:114万
展开全部
AsyncTask
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
四念住
2015-06-12 · TA获得超过270个赞
知道小有建树答主
回答量:587
采纳率:0%
帮助的人:239万
展开全部
AsyncTask 或自己线程实现一个
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式