Android之异步调用

Android之异步调用,第1张

概述概述AsyncTask可以很好的,准确的使用UI线程,他可以将一个比较耗时(几秒钟)的动作运行在后台,并且能将结果返回至UI线程中,不需要通过(Thread *** 作和Handler *** 作)。使用时必须通过创建一个AsyncTask的子类,至少重写其doInBackground(顾名思义,你想在后台执行怎样的一个 *** 作)方法,大多数也会重写 概述
AsyncTask可以很好的,准确的使用UI线程,他可以将一个比较耗时(几秒钟)的动作运行在后台,并且能将结果返回至UI线程中,不需要通过(Thread *** 作和Handler *** 作)。
使用时必须通过创建一个AsyncTask的子类,至少重写其doInBackground(顾名思义,你想在后台执行怎样的一个 *** 作)方法,大多数也会重写onPostExcute(后台执行完之后你想将一个结果返回在UI线程的哪里)方法。AsyncTask的三种泛型定义和四个步骤
首先了解AsyncTask的三种泛型定义,如图:


Params:执行后台 *** 作时发给任务的参数类型,即doInBackground方法的参数,例:如果执行后台下载图片的文件,此处可为String 类型的imagePath。
Progress:后台 *** 作执行过程中进度的类型。
Result:返回给UI线程的数据类型。即onPostExcute方法的参数,例:如果后台执行的是一个图片下载任务,此处肯定将返回一个Bitmap类型给UI线程。
当然并不是所有的类型都会使用到,例如Progress,如果不需要显示进度条,将无需设计这个类型,直接用VoID类型。
其次了解其四个步骤:
onPreExcute:执行后台任务之前做的 *** 作,例如可以是d出一个Dialog提示用户正在下载中。同时需要在onPostExcute方法中将该Dialog dismiss。
onInBackground:略。前面已讲述。补充:此方法中可以使用publishProgress发布进度单元,且进度单元会发布在onProgressUpdate步骤中。
onProgressUpdate:顾名思义就是进行进度条的更新 *** 作。将进度单元显示在UI线程中。
onPostExcute:略。补充:此方法的参数是doInBackground方法返回的结果。AsyncTask正常运行的条件:
①必须在UI线程中加载AsyncTask类。
②必须在UI线程中创建任务实例。
前面两点总结起来就是要在UI线程中创建AsyncTask的子类,并且必须在UI线程中实例化。
③在UI线程中调用excute()来执行任务。不要手动调用AsyncTask的四个步骤函数。

为啥doInBackground方法中调用publishProgress,在onProgressUpdate可以实时更新进度条。
因为在调用publishProgress之前,doInBackground的任何记忆效应对onProgressUpdate来说是可见的,而且后续的publishProgress不会影响onProgressUpdate正在进行的 *** 作。

下面展示一个异步加载图片的 *** 作
①准备工作
》访问网络图片,首先需要授予权限。Manifest.xml中节点之前

总结

以上是内存溢出为你收集整理的Android之异步调用全部内容,希望文章能够帮你解决Android之异步调用所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1118981.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存