位置: 编程技术 - 正文

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

  • 补交印花税怎么做账
  • 计提税费表格
  • 车辆使用费属于什么税收分类
  • 增值税留抵税额是什么意思
  • 基本户可以开立几个
  • 怎么用两台电脑测试网线
  • 发票上的密码区有什么用
  • 民办非营利组织幼儿园清算时固定资产如何处理
  • 贷款利息未取得发票所得税税前扣除哪年开始
  • 个人房产税延期怎么办理
  • 物业公司哪些费用需要公示
  • 固定资产原值的含义
  • 以前年度少计费用,调整分录
  • 冲减预提费用
  • 变更税号后地税个税申报系统还是显示老税号怎么办?
  • 发票勾选平台显示不成功
  • 所得税需要结转嘛
  • 小规模季度不超过30万元免税会计分录
  • 企业发放给员工子女抚养费
  • 从租计征的税率
  • 公司买的油烟机可以抵扣进项税吗
  • 餐厨垃圾处理有哪些设备
  • deepin如何
  • 如何查看windows密钥时间
  • 广告业年终总结
  • ipssvc.exe - ipssvc是什么进程 有什么作用
  • 非合理损耗会计分录
  • 无销售发票的基本户收入?
  • php实现用户登录
  • framework 4 client profile 不动
  • 申报系统异常
  • phpweb框架
  • vue项目启动过程
  • 深圳杯2020c题
  • 退回社保怎么做分录
  • 申报财务报表利润怎么写
  • 业务出差餐费如何记账
  • 畜牧业科技公司
  • vue3父子组件通信
  • FPGA实现64点IFFT(VHDL)
  • sql serverjdbc
  • dedecms怎么改图片
  • 织梦是啥
  • 个体工商户核算方式选哪个比较好
  • 结转成本时库存商品是负数
  • sql server 用法
  • 外购商品职工福利进项税额转出如何记账?
  • 外贸出口企业申报年月怎么填
  • 租赁行业的增值税率
  • 科研专用费是什么
  • 生产企业电费怎么做账
  • 免费样品的好处
  • 应收账款入账价值包括现金折扣吗
  • 购入汽车当月需要计提折旧吗
  • 去银行提备用金需要什么
  • 未打印税务分类怎么处理
  • 银行退票业务
  • mysql优化步骤
  • mac如何设置默认打开程序
  • centos 怎么用
  • win10手机版微信uwp下载
  • win10高分辨率
  • win7一键共享软件
  • windows10周年更新
  • win7电脑系统如何
  • 64位win7安装kb3038314补丁更新失败临时解决方法
  • win7开始菜单中的程序图标修改了
  • windows8_os
  • 微软输入法拼音
  • windows8.1crazy error
  • iphone一直让登陆icloud
  • linux命令有啥用
  • jquery的点击事件怎么写
  • javascript面向对象吗
  • javascript 类
  • 天津地税局网上营业厅
  • 新加坡税务局电邮
  • 1.8排量够用吗
  • 营业税发票丢失能否开增值税普票
  • 社会保险登记表下载
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设