iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >Android AsyncTask的缺陷和问题总结
  • 958
分享到

Android AsyncTask的缺陷和问题总结

asynctaskAndroid 2022-06-06 11:06:41 958人浏览 八月长安
摘要

Android  AsyncTask的缺陷和问题总结 在Android开发中,AsyncTask可以使得用户避免直接使用Thread类和Handler 来处理后台操作

Android  AsyncTask的缺陷和问题总结

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(),那么这个操作会继续下去。

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

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

您可能感兴趣的文章:浅谈Android AsyncTask内存安全的一种使用方式详解spring/Spring Boot异步任务编程WEBAsyncTaskSpring Boot 使用WebAsyncTask异步返回结果Android中使用AsyncTask实现下载文件动态更新进度条功能Android使用AsyncTask下载图片并显示进度条功能Android AsyncTask的优缺点详解Android带进度条的下载图片示例(AsyncTask异步任务)Android 中使用 AsyncTask 异步读取网络图片Android使用AsyncTask加载图片的操作流程


--结束END--

本文标题: Android AsyncTask的缺陷和问题总结

本文链接: https://www.lsjlt.com/news/28247.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 总结软件缺陷的定义、分类、检测和修复
    这篇文章主要介绍“总结软件缺陷的定义、分类、检测和修复”,在日常操作中,相信很多人在总结软件缺陷的定义、分类、检测和修复问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”总结软件...
    99+
    2024-04-02
  • 关于vue2响应式缺陷的问题
    目录vue2响应式缺陷1.对象新增的属性没有响应式2.数组的部分操作没有响应式vue2与vue3的响应式原理vue2响应式vue3响应式雏形vue3的响应式相较于vue2的优势vue...
    99+
    2024-04-02
  • Android 黑屏问题分析处理总结
    介绍 黑屏问题是显示相关的综合性问题,涉及Android应用层、框架层和底层SurfaceFlinger、屏显等多个领域。下面有一些基础的判断来定位黑屏问题的归属: (1) 屏幕没有亮屏、背光为0则需先从power、屏显角度分析 (2) 屏...
    99+
    2023-08-16
    android
  • K3问题总结和解决方法
    一、问题描述 客户端运行,提示:该数据正在被修改,无法编辑? 解决方法1、关闭杀毒软件; 2、用KDMAINDBG.EXE跟踪检测组件; 3、在数据库的该套帐实体中的表中清空t-funcontrol的内容 二、问题描述1...
    99+
    2023-01-31
    解决方法
  • Python opencv缺陷检测的实现及问题解决
    题目描述 利用opencv或其他工具编写程序实现缺陷检测。 实现过程 # -*- coding: utf-8 -*- ''' 作者 : 丁毅 开发时间 : 2021/4/21 ...
    99+
    2024-04-02
  • 一些前端问题的总结
    本篇内容主要讲解“一些前端问题的总结”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“一些前端问题的总结”吧!代码逻辑错误「 人很容易发现别人的错误,而对自己的错误...
    99+
    2024-04-02
  • 总结Golang编程时常见的错误和问题
    Golang(又称 Go)是一种相对较新的编程语言,逐渐受到了越来越多人的欢迎。尽管 Golang 与早期的编程语言有许多不同之处,但其出现的初衷一直都是为了方便程序员进行编写和管理高效的代码。在使用 Golang 进行编程时,有一些常见的...
    99+
    2023-05-14
  • 总结分析无法访问PHP的问题
    在搭建服务器时,你可能会发现无法访问PHP的问题。这是一个非常常见的问题,在解决它之前,我们需要先了解一些概念。PHP是一种被广泛应用的脚本语言,它可以让你在服务器端编写程序来动态生成网页内容。为了让访问者能够看到你编写的PHP代码,你需要...
    99+
    2023-05-14
  • js与css的阻塞问题总结
    这篇文章主要讲解了“js与css的阻塞问题总结”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“js与css的阻塞问题总结”吧!目录DOMContentLoaded和loadjs 阻塞了什么cs...
    99+
    2023-06-20
  • Golang 中的json.Marshal问题总结(推荐)
    目录1.Quiz2.Answer3.ResolvingConclusion1.Quiz 有如下一个例子: package main import ( "encoding/json...
    99+
    2024-04-02
  • Java多线程和并发常见问题总结
    这篇文章主要讲解了“Java多线程和并发常见问题总结”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java多线程和并发常见问题总结”吧!Java多线程问题1:进程和线程之间有什么不同一个进程...
    99+
    2023-06-17
  • golang匿名函数和闭包的优缺点总结
    匿名函数简洁、匿名,但可读性差、调试困难;闭包能封装数据、管理状态,但可能导致内存消耗和循环引用。实战案例:匿名函数可用于简单数值处理,闭包可实现状态管理。 Go 语言匿名函数和闭包的...
    99+
    2024-05-05
    golang 闭包 作用域
  • jupyter notebook无法打开和运行代码问题的总结
            为了更有利于学习Python,需要对jupyter notebook有一定的了解,下面主要总结了个人在学习过程中遇到的问题。 目录 一、Anaconda的安装和解决打不开jupyter notebook问题 二、jupyte...
    99+
    2023-09-09
    python
  • Java中常见的编码集问题总结
    目录一、遇到一个问题1、读取CSV文件2、控制台输出二、带有BOM的UTF-81、BOM2、UTF-83、UTF-8 BOM4、CSV文件乱码问题三、编码解码四、解决读取&ldquo...
    99+
    2023-02-16
    Java常见编码集问题 Java编码集问题 Java编码集
  • PHP四大主流框架的优点和缺点总结
    这篇文章主要讲解了“PHP四大主流框架的优点和缺点总结”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP四大主流框架的优点和缺点总结”吧!ThinkPHPThinkPHP(FCS)是一个轻...
    99+
    2023-06-04
  • 详细总结Python常见的安全问题
    目录一、输入注入二、assert 语句(Assert statements)三、计时攻击(Timing attacks)四、临时文件(Temporary files)五、使用 yam...
    99+
    2024-04-02
  • 一文总结JavaScript中Promise遇到的问题
    目录什么是Promise1. 是否可以使用return 代替 resolve2. 使用throw还是reject?示例1:不会被catch的throw Error示例2:不使用rej...
    99+
    2023-05-18
    JavaScript Promise问题 JavaScript Promise
  • python列表嵌套引发的问题总结
    目录1.嵌套列表2.识别坑点3.区分两个概念4.小例子5.正确代码总结1.嵌套列表 Python中有一种内置的数据类型叫列表(list),它是一种容器,可以用来承载其他的对象(准确的...
    99+
    2024-04-02
  • pandas检查和填充缺失值的N种方法总结
    目录一、构建示例数据二、检查缺失值的n种方法2.1 确认是否有缺失值的两种方法2.2 查看缺失数目和缺失率2.3 查看非缺失值数目三、缺失值填充三种示例一、构建示例数据 import...
    99+
    2023-01-28
    pandas检查缺失值 pandas填充缺失值 pandas缺失值
  • 关于Python包导入报错的问题总结
    目录错误记录总结首先,一般来说,写一个小demo可能一个文件就够了,但是要是做一个小项目,可能需要拆分成很多零散的文件,放在不同的文件夹里面调用,这个就称之为模块(包),Python...
    99+
    2023-02-17
    Python包导入 Python包导入报错 Py包导入报错
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作