位置: 编程技术 - 正文

Android的AsyncTask官方API谷歌翻译版

编辑:rootadmin
公共抽象类AsyncTask的扩展对象 的java.lang.Object↳android.os.AsyncTask <PARAMS,进展,结果>类概述

推荐整理分享Android的AsyncTask官方API谷歌翻译版,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

AsyncTask的正确实现,易于使用的用户界面线程。 此类允许执行后台操作而无需操作线程和/或处理程序发布在UI线程上的结果。

AsyncTask的设计是围绕一个辅助类Thread和Handler ,并不构成通用线程框架。 AsyncTasks最好应用于短操作(几秒钟之最。)如果您需要保持运行很长一段时间线程,强烈建议您使用所提供的各种API java.util.concurrent如包Executor , ThreadPoolExecutor和FutureTask 。

一个异步任务由在后台线程运行的计算,其结果发表在UI线程上定义。 一个异步任务由3泛型类型定义,所谓Params , Progress和Result ,以及4个步骤,称为onPreExecute ,doInBackground , onProgressUpdate和onPostExecute 。

用法

AsyncTask的必须被继承使用。 子类将覆盖至少一个方法( doInBackground(Params...)和最经常将覆盖第二个( onPostExecute(Result) 。)

下面是子类的实例:

一旦创建,一个任务执行得很干脆:

AsyncTask的的泛型类型

所使用的一个异步任务的三种类型的有以下几种:

Params ,参数的类型发送到在执行任务。Progress ,背景计算期间发布的进展单元的类型。Result ,背景计算的结果的类型。

不是所有类型总是使用一个异步任务。 为了纪念一个类型为未使用,只需使用类型Void :

4个步骤

当执行一个异步任务,任务经过4个步骤:

onPreExecute()调用UI线程上执行任务之前。 该步骤通过显示在用户界面的进度条通常用于设置任务,例如。doInBackground(Params...)后,立即在后台线程调用onPreExecute()完成执行。 这个步骤是用于执行背景计算,并可以花费很长时间。 异步任务的参数被传递到这一步。 该计算的结果,必须通过此步骤被返回,将被传递回的最后一步。 这一步也可以使用publishProgress(Progress...)发布的进步一个或多个单元。 这些&#;公布在UI线程上,在onProgressUpdate(Progress...)一步。onProgressUpdate(Progress...)调用后UI线程上调用publishProgress(Progress...) 的执行的计时是不确定的。 此方法用于显示的任何形式的用户界面中的进展而背景计算仍在执行。 例如,它可用于动画在文本字段进度条或显示日志。onPostExecute(Result) ,后台计算完成后在UI线程调用。 背景计算的结果被传递给此步骤作为一个参数。取消任务

一个任务可以在任何时候通过调用取消cancel(boolean) 。 调用此方法将导致后续调用isCancelled()返回true。 调用此方法后, onCancelled(Object) ,而不是onPostExecute(Object)后,将被调用doInBackground(Object[])的回报。 为了确保任务尽快取消,您应经常检查返回&#;isCancelled()定期从doInBackground(Object[])如果可能的话(在例如一个循环。)

线程规则

有迹象表明,必须遵循这一类正常工作的几个线程规则:

该AsyncTask的类必须在UI线程加载。 这是由于自动完成JELLY_BEAN 。任务实例必须在UI线程上创建。execute(Params...)必须在UI线程调用。不要 call onPreExecute() , onPostExecute(Result) , doInBackground(Params...) , onProgressUpdate(Progress...) manually.该任务只能执行一次(如果是第二次执行尝试一个异常将被抛出。)内存可观测

AsyncTask的保证所有回调调用以这样的方式,下面的操作都没有明确的同步安全同步。

在构造函数或设置成员字段onPreExecute()并指他们在doInBackground(Params...)坐落在成员字段doInBackground(Params...)并参考他们onProgressUpdate(Progress...)和onPostExecute(Result) 。为了执行

当第一次推出,AsyncTasks是在一个后台线程串行执行。 与开始DONUT ,这改变为线程允许多个任务并行操作的一个池。 开始与HONEYCOMB ,任务在单个线程中执行,以避免因并行执行常见的应用程序错误。

如果你真的想并行执行,你可以调用executeOnExecutor(java.util.concurrent.Executor, Object[])与THREAD_POOL_EXECUTOR 。

总结嵌套类枚举AsyncTask.Status指示任务的当前状态。领域公共静态最后的遗嘱执行人SERIAL_EXECUTOR一个Executor ,在串行顺序一次执行任务之一。公共静态最后的遗嘱执行人THREAD_POOL_EXECUTOR一个Executor ,可用于并行执行的任务。公共构造函数AsyncTask的 ()创建一个新的异步任务。公共方法最终布尔取消 (布尔mayInterruptIfRunning)

试图取消对此任务的执行。

静态无效执行 ( 可运行可运行)方便版本execute(Object)的一个简单的Runnable对象使用。最后 AsyncTask的 <PARAMS,进展,结果>执行 (参数... PARAMS)执行指定的参数的任务。最后 AsyncTask的 <PARAMS,进展,结果>executeOnExecutor ( 执行人 EXEC,参数... PARAMS)执行指定的参数的任务。最终的结果得到 (长超时, 为TimeUnit单位)如有必要,等待至多给定的时间计算完成,然后获取其结果。最终的结果得到 ()如有必要,等待计算完成,然后获取其结果。最后AsyncTask.Status的getStatus ()返回此任务的当前状态。最终布尔isCancelled ()返回true, 如果这个任务被取消之前,正常完成。受保护的方法抽象的结果doInBackground (参数... PARAMS)重写此方法在后台线程进行计算。空间onCancelled ( ​​结果结果)

在UI线程上运行后cancel(boolean)被调用doInBackground(Object[])已完成。

空间onCancelled ()

应用程序应该重写最好onCancelled(Object) 。

空间onPostExecute (结果结果)

运行在UI线程上后, doInBackground(Params...)

空间onPreExecute ()之前运行在UI线程doInBackground(Params...)空间onProgressUpdate (进展...&#;)后在UI线程上运行publishProgress(Progress...)被调用。最终无效publishProgress (进展...&#;)这种方法可以从调用doInBackground(Params...)到UI线程上发布更新,而后台计算仍在运行。[展开]继承的方法 从类的java.lang.Object领域公共静态最后的遗嘱执行人 SERIAL_EXECUTOR加入API级别

一个Executor ,在串行顺序一次执行任务之一。 这种序列化是全球的一个特定的过程。

公共静态最后的遗嘱执行人 THREAD_POOL_EXECUTOR加入API级别

一个Executor ,可用于并行执行的任务。

公共构造函数公共 AsyncTask的 ()加入API级别3

创建一个新的异步任务。 此构造方法必须在UI线程调用。

公共方法公共最后布尔 取消 (布尔mayInterruptIfRunning)加入API级别3

试图取消对此任务的执行。 如果任务已经完成,已经被取消了这种尝试将会失败,或无法被取消某些其他原因。 如果成功,并取消时调用这个任务还没有开始,这个任务不应该运行。如果任务已经启动, 则 mayInterruptIfRunning参数决定是否执行此任务的线程应该以试图停止任务被中断。

Android的AsyncTask官方API谷歌翻译版

调用此方法将导致onCancelled(Object)被UI线程调用后, doInBackground(Object[])的回报。 调用此方法保证onPostExecute(Object)是永远不会被调用。 调用此方法后,你应该检查返回的&#;isCancelled()定期从doInBackground(Object[])以尽早完成任务。

参数mayInterruptIfRunning真 ,如果执行此任务的线程应该被中断; 否则,在正在进行的任务被允许完成。回报否则返回true;如果任务不能被取消,通常是由于它已经正常完成假公共静态无效 的execute( Runnable的可运行)加入API级别

方便版本execute(Object)的一个简单的Runnable对象使用。 见execute(Object[])的执行顺序的更多信息。

公共最后AsyncTask的 <PARAMS,进展,结果> 执行 (参数... PARAMS)加入API级别3

执行指定的参数的任务。 任务返回本身(这一点),这样调用者可以保持一个参考吧。

注:此功能的时间表在队列的任务​​为单个后台线程或取决于平台版本的线程池。 当第一次推出,AsyncTasks是在一个后台线程串行执行。 与开始DONUT ,这改变为线程允许多个任务并行操作的一个池。 开始HONEYCOMB ,任务是回到上一个单独的线程执行,以避免因并行执行常见的应用程序错误。 如果你真的想并行执行,你可以使用executeOnExecutor(Executor, Params...)版本,此方法的THREAD_POOL_EXECUTOR ; 然而,看到的评论有关于它的使用警告。

此方法必须在UI线程调用。

参数PARAMS任务的参数。回报AsyncTask的实例中。抛出IllegalStateException异常如果getStatus()返回无论是RUNNING或FINISHED 。公共最后AsyncTask的 <PARAMS,进展,结果> executeOnExecutor( 遗嘱执行人 EXEC,参数... PARAMS)加入API级别

执行指定的参数的任务。 任务返回本身(这一点),这样调用者可以保持一个参考吧。

这种方法通常用于THREAD_POOL_EXECUTOR允许多个任务并行由AsyncTask的管理线程池运行,但你也可以用你自己的Executor自定义的行为。

警告:允许多个任务,以从一个线程池并行运行一般不想要的东西,因为它们的操作的顺序没有限定。 例如,如果这些任务是用于修改任何共同的状态(如写入文件由于一个按钮点击),有修改的顺序没有保证。 如果没有细致的工作有可能在极少数情况下对数据的新版本将超过撰写的一老一,导致晦涩的数据丢失和稳定性问题。 这样的变化最好在连续执行; 为保证此项工作的系列化,无论平台版本,你可以使用此功能SERIAL_EXECUTOR 。

此方法必须在UI线程调用。

参数EXEC遗嘱执行人使用。 THREAD_POOL_EXECUTOR可作为松散耦合任务方便进程范围的线程池。PARAMS任务的参数。回报AsyncTask的实例中。抛出IllegalStateException异常如果getStatus()返回无论是RUNNING或FINISHED 。公众最终结果GET(长超时, 为TimeUnit单位)加入API级别3

如有必要,等待至多给定的时间计算完成,然后获取其结果。

参数暂停时间取消操作前等待。单元的时间单位的超时。回报计算的结果。抛出CancellationException如果如果计算被取消。为ExecutionException如果计算抛出异常。InterruptedException的如果当前线程被中断,而等待。TimeoutException异常如果等待超时。公众最终结果 得到 ()加入API级别3

如有必要,等待计算完成,然后获取其结果。

回报计算的结果。抛出CancellationException如果如果计算被取消。为ExecutionException如果计算抛出异常。InterruptedException的如果当前线程被中断,而等待。公共最后AsyncTask.Status 的getStatus()加入API级别3

返回此任务的当前状态。

回报的当前状态。公共最后布尔isCancelled()加入API级别3

返回true, 如果这个任务被取消之前,正常完成。 如果要调用cancel(boolean)的任务,通过此方法返回的&#;应定期检查,从doInBackground(Object[])以尽快结束任务。

回报如果真正的任务被取消它完成前受保护的方法保护抽象的结果doInBackground(参数... PARAMS)加入API级别3

重写此方法在后台线程进行计算。 指定的参数传递给参数execute(Params...)这个任务的调用者。 这种方法可以调用publishProgress(Progress...)到UI线程上发布的更新。

参数PARAMS任务的参数。回报因此,通过该任务的子类定义。保护无效onCancelled(结果结果)加入API级别

在UI线程上运行后cancel(boolean)被调用doInBackground(Object[])已完成。

默认实现调用onCancelled()而忽略结果。 如果你写你自己的实现,不叫super.onCancelled(result) 。

参数结果其结果,如果有的话,计算在doInBackground(Object[])可以为空保护无效onCancelled()加入API级别3

应用程序应该重写最好onCancelled(Object) 。 这种方法是通过默认实现调用onCancelled(Object) 。

在UI线程上运行后cancel(boolean)被调用doInBackground(Object[])已完成。

保护无效onPostExecute(结果结果)加入API级别3

运行在UI线程上后, doInBackground(Params...) 指定的结果是返回的&#;doInBackground(Params...)

如果任务被取消,此方法将不会被调用。

参数结果由计算出的运算结果doInBackground(Params...)保护无效onPreExecute()加入API级别3

之前运行在UI线程doInBackground(Params...)

也可以看看onPostExecute(Result)doInBackground(Params...)保护无效onProgressUpdate(进展...&#;)加入API级别3

后在UI线程上运行publishProgress(Progress...)被调用。 指定的&#;传递给&#;publishProgress(Progress...)

参数&#;该&#;指示进度。最终保护无效publishProgress(进展...&#;)加入API级别3

这种方法可以从调用doInBackground(Params...)到UI线程上发布更新,而后台计算仍在运行。 每次调用此方法将触发执行onProgressUpdate(Progress...) UI线程。onProgressUpdate(Progress...)将不会被调用,如果该任务已经被取消。

参数&#;进度&#;来更新用户界面。

Android中获取JSON /***数据形式:{id:1,isNo:false,data:[{id:1,name:张三},{id:2,name:李四},{id:2,name:王五}]}*/publicstaticListMapString,StringgetJSONObject(Stringpath)throwsException{ListMapString,Stringlist=

【MAC版】Android ADB server didn&#;t ACK * failed to start daemon *解决办法 运行程序时,出现如下错误[--::-CustomKeyBoard]Theconnectiontoadbisdown,andasevereerrorhasoccured.[--::-CustomKeyBoard]YoumustrestartadbandEclipse.[--:2

Android -常见面试提问 1.要做一个尽可能流畅的ListView,你平时在工作中如何进行优化的?①Item布局,层级越少越好,使用hierarchyview工具查看优化。②复用convertView③使用ViewHo

标签: Android的AsyncTask官方API谷歌翻译版

本文链接地址:https://www.jiuchutong.com/biancheng/371032.html 转载请保留说明!

上一篇:Android listView 动态加载数据,下拉加载数据,上拉加载数据(listview安卓)

下一篇:Android中获取JSON(android获取json数据)

  • 先包装后销售
  • 实际负税计算公式
  • 期初存货中固定制造费用
  • 以公司名义买50万的车可以省多少钱
  • 以前年度损益调整结转到未分配利润
  • 减少注册资金的理由有哪些
  • 虚开普票的立案标准
  • 滴滴的普票可以抵税吗
  • 借贷必相等为什么是错的
  • 净现值率和现值指数之间的关系
  • 增值税属于会计科目的什么
  • 企业撤资的所得税处理
  • 提供劳务企业所得税纳税义务发生时间
  • 成本少结转了怎么调回
  • 销售使用过的固定资产3%减按2%
  • 技术出口税务处理
  • 非独立核算分公司企业所得税
  • 将产品转为本企业使用
  • 车间领用周转材料会计分录怎么写
  • 技术服务费发票税率是多少
  • 工业企业水电费如何分摊
  • 土地使用税的计算公式举例子
  • 递延所得税资产和负债怎么理解
  • 国家税务总局公告2023年第1号
  • 工资薪金总额包括职工福利费吗
  • 洗衣店每个月水电费多少钱
  • 增值税纳税义务人
  • 支付的专家费怎么入账
  • 个人独资企业租车缴纳税金
  • 能抵扣税款的发票有哪些
  • 自己种的苗木开发票要什么手续
  • 固定资产减值账务处理怎么做
  • 财付通转款会计分录
  • 蛋糕店盈亏平衡分析
  • 本月未认证的怎么处理
  • 印花税是怎么计算
  • Proxmox ve(PVE) 显示CPU和硬盘温度、UPS信息
  • 增值税发票开红字发票后账务处理
  • 先出库还是先发货
  • 公司为实习生买保险列支什么科目?
  • 小白学php需要多久能上手
  • 佛法戒律论
  • idea前端快捷键
  • 【第十一届“泰迪杯”数据挖掘挑战赛】B题产品订单的数据分析与需求预测“解题思路“”以及“代码分享”
  • easyui表格分页
  • 微信收款要求绑定银行卡怎么办
  • 关系代数关系运算
  • web搜索与挖掘
  • php实现评论回复功能
  • 增值税普通发票和专用发票有什么区别
  • 普通发票作废算额度吗
  • 预付卡发票如何开
  • sql翻译
  • 开收据是财务还是出纳
  • 年末计提企业所得税的依据
  • 收到在建工程会计分录
  • 公司账户收入多少要扣税
  • 营销策划服务费属于什么服务
  • 政府补助计入资本公积吗
  • 招标代理专家库合法吗
  • 公司收不到的账款怎么办
  • 已经支付的预付款 银行能更改为货到付款吗
  • sqlbean
  • 如何开启windows防火墙
  • 让windows server 2003 32位支持8G内存大内存
  • centos中用户的基本属性
  • linux进程运行的两种方式
  • win8升级win10补丁
  • mac os 如何备份
  • centos6.5怎么进入图形界面
  • mcupdate.dll
  • chromexcel
  • android应用程序的主要语言是java
  • 蓝牙协议栈包括
  • jquery table
  • jquery增加
  • 中国税务定额发票怎么开
  • 浙江税务打不开,提示新版本
  • 拆迁户契税减免政策文件
  • 暂停资本化期间,一般借款的借款利息不允许资本化
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设