位置: 编程技术 - 正文

AsyncTask的缺陷和问题(asynctask缺点)

编辑:rootadmin

推荐整理分享AsyncTask的缺陷和问题(asynctask缺点),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:asyncio queue,asynctask和handler,asyncio queue,android asynctask优缺点,async await缺点,async await缺点,async.queue,async await缺点,内容如对您有帮助,希望把文章链接给更多的朋友!

在Android开发中,AsyncTask可以使得用户避免直接使用Thread类和Handler 来处理后台操作,适用于需要异步处理数据并将数据更新到界面上的情况。AsyncTask适用于后台操作只有几秒的短时操作。但是AsyncTask本身存在很多糟糕的问题,如果使用中不注意,将会影响程序的健壮性。

1、生命周期

很多开发者会认为一个在Activity中创建的AsyncTask会随着Activity的销毁而销毁。然而事实并非如此。AsyncTask会一直执行, 直到doInBackground()方法执行完毕。然后,如果 cancel(boolean)被调用, 那么onCancelled(Result result) 方法会被执行;否则,执行onPostExecute(Result result) 方法。如果我们的Activity销毁之前,没有取消 AsyncTask,这有可能让我们的AsyncTask崩溃(crash)。因为它想要处理的view已经不存在了。所以,我们总是必须确保在销毁活动之前取消任务。总之,我们使用AsyncTask需要确保AsyncTask正确地取消。

另外,即使我们正确地调用了cancle() 也未必能真正地取消任务。因为如果在doInBackgroud里有一个不可中断的操作,比如BitmapFactory.decodeStream(),那么这个操作会继续下去。

AsyncTask的缺陷和问题(asynctask缺点)

2、内存泄漏

如果AsyncTask被声明为Activity的非静态的内部类,那么AsyncTask会保留一个对创建了AsyncTask的Activity的引用。如果Activity已经被销毁,AsyncTask的后台线程还在执行,它将继续在内存里保留这个引用,导致Activity无法被回收,引起内存泄露。

3、结果丢失

屏幕旋转或Activity在后台被系统杀掉等情况会导致Activity的重新创建,之前运行的AsyncTask会持有一个之前Activity的引用,这个引用已经无效,这时调用onPostExecute()再去更新界面将不再生效。

4、并行还是串行

在Android 1.6之前的版本,AsyncTask是串行的,在1.6至2.3的版本,改成了并行的。在2.3之后的版本又做了修改,可以支持并行和串行,当想要串行执行时,直接执行execute()方法,如果需要并行执行,则要执行executeOnExecutor(Executor)。

You need to use a Theme.AppCompat theme (or descendant) with this activity 问题现象:只要添加android:theme=@android:style/Theme.Black.NoTitleBar,APP就会闪退。错误log:java.lang.RuntimeException:UnabletostartactivityComponentInfo{com.example.test2/com.examp

Android性能优化(四)——代码优化工具Lint 一直在想,如果Android中有这样一种工具该多好:可以直接检查出代码中的问题,我可以根据检查出的问题来进行针对性的修改,果然Google后发现,有这

Android之监听手机软键盘弹起与关闭 背景:在很多App开发过程中需要在Activity中监听Android设备的软键盘弹起与关闭,但是Android乎没有提供相关的的监听API给我们来调用,本文提供了一个可

标签: asynctask缺点

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

上一篇:Android 实现智能机器人聊天(安卓智能设备指什么)

下一篇:Android性能优化(四)——代码优化工具Lint(Android性能优化的方面12个)

  • 吸收合并的税务问题
  • 生产调味料用什么手续
  • 减免税款最终转到哪个科目?
  • 进口原料免税
  • 核定征收的计算方法有哪些
  • 旅游业小规模纳税人的认定标准是什么
  • 印花税是当月交当月的吗
  • 代扣代缴车船税手续费比例
  • 账务处理和税前扣除如何处理
  • 对方公司注销用现金还货款怎么入帐?
  • 汽车按揭费用收合法吗?
  • 职员在外地出差怎么处理
  • 生产车间的房屋租赁费计入什么科目
  • 个人所得税手续费返还账务处理
  • etc发票进项抵扣的最新政策
  • 计提年终奖金的会计分录怎么写
  • 危险废物处理费用发票怎么开
  • 处置固定资产按残值还是净值
  • 处置的固定资产
  • 非同一控制企业合并商誉
  • 一般纳税人注销库存需要补交税吗
  • 外派人员补助标准
  • 做账的是什么会计
  • 跨月发票作废怎么红冲
  • 增值税收入和所得税收入不一致怎么办
  • 销售人员报销差旅费怎么报税
  • 审核记账流程
  • 公司收回货款会计分录
  • Win7系统怎么禁用TDPF
  • ccs是什么软件
  • 增资导致的股权稀释涉税吗
  • 代购货物的缴税情况
  • android_app.intro
  • sysmon安装
  • Laravel5.* 打印出执行的sql语句的方法
  • 劳务公司给包工头打款备注写什么
  • 失控发票成本做账怎么做
  • 跨年专票红冲步骤
  • 织梦cms官网
  • 公司项目支付的钱叫什么
  • 平价转让股权怎么做账
  • 银行存款日记账填写样本图
  • 年末未分配利润计算公式
  • 工程分包合同协议书
  • 应收账款的注意要点
  • 房屋出租简易计税进项税额需要转出么
  • 合伙企业是否需要缴纳印花税
  • 工地的工人工资怎么入账
  • 财政补助资金是什么意思
  • 小规模纳税人采用简易计税方法征收增值税
  • 企业职工薪酬如何确定
  • 建筑业发票的相关要求
  • 工会经费的列支范围有哪些
  • 简易征收可以开具3专票吗
  • 小企业应该如何发展
  • sqlserver怎么删除字段
  • Linux/Mac MySQL忘记密码怎么办
  • 下载微信
  • phpstudy中phpmyadmin无法访问
  • linux i
  • 怎么建立dhcp服务器
  • win7右下角提示测试模式
  • win10相机模糊
  • win8系统忘记密码电脑重置
  • win10关闭metro界面
  • jquery的实现原理
  • perl package
  • unity3D游戏开发
  • vue实现标签页效果
  • jquery ajax后台返回list,前台用jquery遍历list的实现
  • javascript总结笔记
  • ECMAScript5(ES5)中bind方法使用小结
  • bootstrap日期控件背景为白
  • js函数的声明方式
  • jQuery轻松实现表格的隔行变色和点击行变色的实例代码
  • 修改应用程序图标
  • js如何使用
  • 河北市国家税务局官网
  • 三星电视投屏显示不支持当前文件
  • 税务总局2013年65号公告
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设