位置: 编程技术 - 正文

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个)

  • 所得税费用会计分录
  • 小规模忘了报税怎么办
  • 公司股权变更要查账吗
  • 公司缴纳养老保险不在个人账户里吗
  • 农民专业合作社属于什么企业类型
  • 贷款利息收入如何开票
  • 电子发票和纸质发票只能二选一吗
  • 餐饮业加计递减怎么算
  • 企业所得税清算报备表清算结束日
  • 外贸企业申报出口退税时的会计分录
  • 不动产入股需要交哪些税
  • 不达起征点收到销售额如何作分录?
  • 设备款支付比例
  • 个税申报没交会收滞纳金吗
  • 政府补贴可以税前扣除填写在哪里
  • 税务登记证遗失补办
  • 年底进项税和销项税怎么记
  • 分公司税率怎样确定
  • 维修费属于印花税
  • 待处理财产损益科目编码
  • 电子发票可以开专票吗
  • 预付保险费属于什么会计科目
  • 企业为员工支付房租交个税吗
  • 私营公司可以构成单位犯罪吗
  • 税局代开专票会计分录怎么写?
  • 小企业成本核算方法移动加权平均法
  • 常见内存大小
  • 收到的投资属于什么科目
  • 高新企业认定条件2019
  • 税务退回城建税期末怎么结转
  • 哪些资产类科目增加记贷方
  • php aop
  • 编制竣工决算的主要依据
  • 双色球python算法
  • 高新技术企业研发费比例
  • vue导入动图
  • 傅里叶级数狄利克雷判别法
  • 立体匹配原理
  • Cookie和Session的区别,各自的使用方法及常用操作
  • 增值税iva
  • python slic
  • sqlserver编程
  • 矿泉水发票能否抵税
  • 中小型企业营业额和从业人数
  • 清算时存货是否要交税
  • 农产品进项核定扣除成本法
  • 钢管租赁怎么算的
  • 国有土地使用权是什么意思
  • 现金日记账每月都要写期初余额吗
  • 如何理解会计中的借贷? 知乎
  • 企业购买的原材料确认为资产,这属于会计确认的范畴
  • 对公账户分为几类
  • 合同取得成本如何收回
  • 企业支付宝买东西怎么买
  • 日记账的建立
  • mysql数据库备份方法
  • vim入门教程
  • ssh远程连接linux
  • win10新版cortana
  • xp系统桌面图标不见了,点什么都没用?
  • ubuntu切换登录用户
  • windows7的开机启动项在哪里
  • linux使用mv命令,结果文件不见了
  • JavaScript实现QQ列表展开收缩扩展功能
  • dos命令批量处理文件
  • js setmap
  • jquery的validate前端表单验证
  • 搭建nodejs
  • 如何使用nodejs
  • node.js详解
  • android系统联网
  • django 表单
  • 轻松实现人生理想生日尾数农历
  • Javascript Object.extend
  • asp.net+jquery.form实现图片异步上传的方法(附jquery.form.js下载)
  • python查找列表中的元素
  • 2021税务公告
  • 江苏国税电子税务局怎么申报
  • 宿豫区国税分局电话
  • 定额发票怎么查流向
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设