位置: 编程技术 - 正文

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

  • 所得税汇算清缴账务处理
  • 中税协网站怎样补学时
  • 小微企业免税销售额是按1%还是3%
  • 筹建期的开办费计入什么科目
  • 销项发票导出格式不对怎么办
  • 外地预交的附加税金在申报的时候怎么填
  • 为企业担保
  • 企业生产过程中执行标准要把握好以下原则
  • 培训机构给学员过生日
  • 企业关联方利息支出税前扣除的标准扣除
  • 如何申报加计抵减
  • 3项经费计提比例2015
  • 营改增后装修材料如何抵扣?
  • 单品毛利计算公式怎么算
  • 美元转到中国账户可不可以取人民币
  • 本月应该确认收入,但是一般下月才开票该怎么处理?
  • 生产企业出口货物收不到款怎么处理
  • 企业出售房产的账务处理
  • 企业注销前需要固定资产清理吗
  • 减税必须通过开户银行吗
  • 累计已确认收入极可能不会发生重大转回
  • 在建工程暂估入库的账务处理
  • 残疾人不用交医保社保
  • 小规模超过30万是全额交税吗
  • 定期存款利息收入现金流
  • 哪些发票可以开专票
  • 打开网页时显示无法获取属性
  • 长期负债在报表哪里看
  • 代开专票计提附加税吗
  • 如何调整往来账款
  • downloadplus.exe是什么进程 作用是什么 downloadplus进程是安全的吗
  • win7的本地连接在哪
  • 收到发票已入账,退回怎么做账
  • 净资产和净利润一样吗
  • 购入固定资产如何折旧
  • 日本北海道 (© Hiroshi Yokoyama/eStock Photo)
  • php 动态调用类方法
  • 编译原理第三版课后答案
  • linux 运行php
  • php实现分页显示
  • 税款入库期是什么意思
  • 合同补充协议印花怎么写
  • 印花税的会计处理方法
  • 折旧费和折旧额的区别
  • 外购货物用于公益性捐赠
  • 一般纳税人已交税金账务处理
  • 未使用的机器设备有没有实体性贬值
  • 开发票的销售收入正规的做账如何做?
  • 建设单位支付给施工单位的民工工资
  • 房地产行业扣税标准
  • 机器折旧科目
  • 基本户有什么用
  • 水果店的账务处理
  • 毛利润利润总额净利润的关系图
  • 收到税务局退还的个税手续费怎么入账
  • 老板个人借款要纳税吗
  • 会计电算化建账的基本流程有哪些
  • mysql使用语句
  • Windows Server 2016技术预览版第四版系统截图曝光 编号10565
  • 发生意外错误无法完成您的请求
  • xp系统禁止程序联网
  • mac怎么共享打印机设备
  • nilaunch.exe - nilaunch是什么进程 有什么用
  • windows聚焦失效
  • win10系统可以不用杀毒软件吗
  • 简易bmp图片读取软件
  • 用Python设计一个游戏
  • unity4.5.3f3 和 Android的通信
  • js获取父级元素
  • 苹果macos安装
  • 基于nodejs的框架
  • androidstudio手机编程软件
  • 查找的算法有哪些
  • 异地如何拨打12393
  • 北京税务局网上怎么登录
  • 新疆喀什泽普县海拔高度是多少米
  • 广州市番禺区国丹信息管理有限公司
  • 宝鸡二套房契税多少
  • 普洱房产管理局官网
  • 建筑行业的公司近期出现的问题
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设