位置: 编程技术 - 正文

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

  • 公司注销股东收回公司车辆做什么账务处理
  • 企业合并债权如何处理
  • 支付租金对方公司提供发票如何入账
  • 盈余公积计提比例必须是10%么
  • 月末进项税大于销项税怎么结转
  • 施工二级资质是什么意思
  • 个人开具发票需要税号吗
  • 报销单用法
  • 个人所得税定期定额起征点
  • 异地预缴增值税账务处理
  • 印花税的征税对象包括
  • 农产品收购发票可以跨区域开吗
  • 小规模纳税人超过500万可以不转一般纳税人吗
  • 免税商品进项税可以抵扣吗
  • 适用简易计税方法的口诀
  • 美国税改“梦想”很丰满,显示很骨感
  • 新个税法规定的专项扣除包括住房公积金
  • 人身意外保险费可以扣除企业所得税吗
  • 1697508871
  • 医疗卫生机构可以向其他单位或者个人分发第一类疫苗
  • 企业筹建期间可以自己发农民工工资么
  • 债券溢价发行会计分录举例
  • 遗属补助是死亡当月发放还是次月发放
  • 销售收入大于纳税申报销售收入
  • 如何看云空间的内容
  • 王者荣耀中孙尚香怎么玩
  • vue+cesium怎么实现地图的加载
  • 2022年苹果iphone14视频配音乐
  • 付款凭证怎么填写电脑
  • php数组函数有哪些
  • 跟银行借入长期存款
  • js设置input值
  • php的用处
  • php正则表达式匹配字符串
  • 开发成本属于什么类型科目
  • js轮播图视频教程
  • php对接微信支付教程
  • 印花税计税基础含增值税
  • 法定的盈余公积是什么
  • 6月收到4月的单子怎么办
  • python中htmlparser解析html
  • 不动产集体产权证什么意思
  • 其他应付款包括应付股利和应付利息吗
  • 个体工商户可以抵扣进项吗
  • 销售车位应怎么交税
  • 税额四舍五入的差额0.03怎么调整
  • sqlserver服务请求失败或服务未及时响应
  • windowsserver2008r2开启远程桌面
  • 临时工和正式工工资不一样违法吗
  • 汇算清缴利润调增70万会预警吗
  • 为什么要办理外地身份证
  • 一般纳税人只开普票不开专票免税
  • 支付补偿款计入什么会计科目
  • 存货的进口关税计入成本吗
  • 案例分析应收账款管理存在的问题
  • 金税盘一直没用过
  • 矿山运输设备的点检绩效考核
  • 强行卸载系统应用
  • mac 显示器
  • usbmmkbd.exe - usbmmkbd是什么进程
  • win8系统出现蓝屏怎样处理
  • windows7开机
  • 双系统卸载deepin
  • win10 cpu使用率高怎么办
  • css div高度填满父容器剩余空间
  • cocos2dx4.0入门
  • js 函数执行顺序
  • jquery左右移动动画效果
  • linux脚本case
  • js的settimeout方法
  • jquery文件上传进度条
  • jni静态注册和动态注册
  • npm安装nodemodules
  • python中判断语句怎么写
  • JavaScript中的变量名不区分大小写
  • js中定义对象
  • 公路局有钱吗
  • 进项税销项税抵扣公式
  • 河南工商年检网上申报APP
  • 盐城国税电话
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设