位置: 编程技术 - 正文

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

  • 未交增值税和应交增值税科目怎么调整
  • 总账和总分类账的区别图片
  • 增值税 不含税
  • 要约收购期满
  • 一般纳税人进项税额怎么算
  • 股权转让个人所得税如何申报
  • 上年度的会计分录做错了今年可以调整吗
  • 公车补贴计入什么科目
  • 企业无力支付票据
  • 折扣零售商是什么意思
  • 总公司和分公司类型必须一样么
  • 银行存款未达账项包括
  • 微信转账手续费怎么算
  • 小规模纳税人税收优惠政策变化
  • 增值税研发和技术服务内容
  • 股权激励技术入股的最新政策
  • 个人独资企业股权能出让吗
  • 防暑降温列支什么费用
  • 增值税防伪税控系统管理办法
  • 在线网速测试工具
  • 采购涉及哪些部门
  • 对于接受捐赠的固定资产
  • 支付保证金需要附件
  • 印花税会计分录2023
  • 委托代销商品的代销费用
  • 记帐凭证由谁填制
  • 无形资产的摊销年限不得低于多少年
  • 开出转账支票补付款项
  • 集团公司收到的上级秘密
  • php验证码识别
  • 进项税不得抵扣的意思
  • php中的pdo
  • mysqlbinlog -vv
  • 实际库存小于账面库存
  • 如何确定可以结婚生子
  • webpack怎么优化
  • 缴纳个人所得税有什么好处
  • 每月企业所得税怎么征收
  • 出口企业申报退税不再提供纸质
  • 个税 收入
  • 劳动仲裁的调解书可以撤销吗
  • 结算备付金会计分录
  • 2019年无形资产的摊销额为
  • 计提职工薪酬是什么意思
  • 企业将购进的原材料分录
  • 接待客户的住宿费进项税能否抵扣
  • 冲红的发票抵扣联要放在凭证里吗
  • 企业净资产怎么填
  • 所得税滞纳金怎么算的
  • mysql必知必会mobi
  • mysql ERROR 1044 (42000): Access denied for user ''@'localhost' to database
  • sql server 服务器配置
  • wdcp面板
  • 教你鉴别耳机音质的好坏的几大技巧
  • 网站的运维
  • mac显示所有窗口的快捷键
  • 重装win8系统后没有声音
  • 如何在windows沙盒中导入文件
  • win10自定义功能键
  • linux网络设置在哪里
  • win8鼠标设置在哪
  • 如何卸载windows media player
  • win7系统启动不起来什么原因
  • win7唤醒后屏幕黑屏
  • win8系统隐藏文件怎么查看
  • linux个人系统
  • quick-cocos2d-x如何在mac下编译安卓版本
  • cocos2d js教程
  • jquery怎么写
  • cocos2d转unity难吗
  • shell 数组变量
  • Python生成随机数
  • 获取nodejs命令行信息
  • emacs win10
  • javascript设计
  • android开发前景
  • 棚户区改造的回迁房可以交易吗?
  • 中科院有多少在校研究生
  • 新旧鞋号码对比图
  • 怎么查询车船税缴费记录
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设