位置: 编程技术 - 正文

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

  • 网银转账往来款
  • 增值税发票四舍五入
  • 工资薪金需要缴纳什么税种
  • 微商怎么交易流程
  • a企业给关联公司借款怎么做账
  • 在建期间土地使用税可以资本化吗
  • 本月进项留抵会计分录
  • 企业所得税计税金额怎么算
  • 应收账款融资的优缺点
  • 拆迁补偿款上交财政
  • 职工培训费进项能抵扣吗
  • 购置房产按揭应注意事项
  • 固定资产入错账套怎么做账
  • 公司变卖后员工怎么办
  • 居民企业技术转让所得税优惠政策
  • 怎么网上补报以前年度的个人所得税?
  • 一般纳税人年审证明
  • 季报如何填企业信息
  • 个人转让上市公司股票交增值税吗
  • 红字发票如果开多了下个月能进行抵扣么?
  • 利息收入 开票
  • 小规模纳税人适用的增值税征收率
  • 出口转内销的销项税怎么计算
  • 工资薪金支出的扣除标准
  • 普通发票的进项票怎么做分录
  • 怎么获得win10纯净版
  • 预收账款何时结转
  • 企业所得税法规定,企业购置并实际使用
  • win11资源管理器卡死
  • Windows10屏幕键盘在哪
  • key是什么文档
  • 企业转手员工工龄怎么算
  • 电脑默认网关不可以用
  • vue适配pc
  • 收到支票直接背书账务
  • 关联方核对
  • 出资入股是什么意思
  • 基于网络创新形成的大数据的最突出特征是什么?( )
  • 平常心下一句该怎么说
  • 企业收到土地回收怎么办
  • 工会经费,残保金,会计分录
  • 未经审计情况说明怎么写
  • 计算机中的意思和含义
  • 微信小程序分包中插件样式丢失
  • 股息红利所得为什么按照分配所得的企业所在地确定
  • 劳动法里病假工资怎么算
  • SQL Server UPDATE语句的用法详解
  • 小规模未达起征点销售额是多少
  • 固定资产一次性扣除政策
  • 暂估原材料,材料成本如何冲
  • 什么是年化收益和绝对利率
  • 定期定额户超过9万如何交个税
  • 投资性房地产如何进行初始计量
  • 资产负债表的预付款项项目应根据预付账款
  • 企业控股情况怎么看
  • 期间费用是啥
  • 租来的办公室装修费摊销几年
  • sql忽略null
  • mysql在cmd命令操作
  • Centos下Mysql安装图文教程
  • windows sfc命令
  • iis怎么打开项目
  • 远程桌面连接 server 2016
  • centos 6.5安装教程
  • wind10怎么恢复wind7
  • window10快捷键不能用
  • 红帽linux6.0安装教程
  • linux的批处理
  • perl读取文件内容到数组
  • vue中的echarts
  • node.js 定时任务
  • python迭代算法举例
  • 12种JavaScript常用的MVC框架比较分析
  • 解决烧心最快方法
  • 专用发票如何导出
  • 社保缴纳人数和公积金人数不一样怎么说明
  • 网上申报纳税小程序下载
  • 土地整治税率是多少
  • “老师你好”
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设