位置: 编程技术 - 正文

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

  • 建筑发票开具与土增税扣有什么关系?
  • 增值税小规模纳税人认定标准
  • 双定户经营所得用申报吗
  • 增值税纳税义务发生地点的规定
  • 累计折旧影响所得税费用吗
  • 利息收入记借方负数表示增加还是减少
  • 建安行业是建筑行业吗
  • 员工事假扣工资怎么做账
  • 工会经费的减免申请
  • 一次性预收租金增值税
  • 年末发票
  • 冲借款的凭证怎么做
  • 短期借款的利息会计分录怎么写
  • 补计提去年的增值税
  • 天猫开发票需要确认收货吗?
  • 增值税专票需要哪些开票信息
  • 固定资产原值是含税还是不含税
  • 什么是清算资金
  • 印花税走什么费用
  • 汽车销售公司买车后续维修保养
  • 企业汽油费会计分录
  • 成本费用怎么做分录
  • 广告公司营改增后的会计分录
  • 冲减以前年度所得税费用
  • 面粉厂怎样做帐,税率是多少?
  • 1697509550
  • 承兑汇票如何背书转让
  • 企业购买可转债会计分录
  • 腾讯手游助手好不好用
  • 主营业务成本的二级科目有哪些
  • 专家评审费如何报账
  • 怎么认定是否为包工头
  • 城镇土地使用税税率
  • php stream_get_meta_data返回值
  • 清算期间会计科目
  • 拍卖土地印花税
  • 下载文件是php
  • PHP isset()与empty()的使用区别详解
  • 个人从事生产经营
  • framework4.0怎么打开
  • 增值税专用发票怎么开
  • 树莓派能干什么
  • vue项目移动端怎么做适配
  • 城镇土地使用税减免税政策2023年
  • 长期无法收回的应收账款如何处理
  • 建筑工程分包案例
  • sql server 2008 r2教程
  • 发票已开不确认收入可以做吗?
  • 信用减值损失与资产减值损失
  • 一般纳税人购入固定资产进项抵扣
  • 业务招待费汇算清缴账务处理
  • 增值税的专用发票金额含税吗
  • 前几个月的印花税怎么算
  • 小规模小微企业免税销售额
  • 弱电工程属于什么行业
  • 本期摊余成本
  • xp系统电脑设置在哪
  • linux以root用户登录
  • QQExternal.exe是什么进程?QQExternal.exe进程为什么被运行?
  • 怎样下载电子书免费的
  • 苹果电脑bim
  • win8桌面在哪
  • nero recode
  • Win7系统可以装ie10浏览器么
  • js填写input
  • python网络编程视频教程
  • perl use of uninitialized
  • unity基础包
  • nodejs基础知识
  • 如何输出反序数
  • python编程术语
  • shell删除一个文件
  • javascript基础入门视频教程
  • javascript里的yield
  • web.py 十分钟创建简易博客实现代码
  • boss直聘怎么注销账号
  • 宁波地税如何网上缴费
  • 地税登记证编号是哪几位
  • 机动车发票怎样开
  • 购买房屋交契税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设