文档章节

AsyncTask的使用注意事项

挥挥手
 挥挥手
发布于 2015/02/11 10:57
字数 622
阅读 160
收藏 8

AsyncTask的使用注意事项
前面的文章曾建议使用AsyncTask而不是使用Thread,但是AsyncTask似乎又有它的限制,这就要根据具体的需求情况而选择合适的工具,No Silver Bullet。下面是一些建议:
•改善你的设计,少用异步处理
线程的开销是非常大的,同时异步处理也容易出错,难调试,难维护,所以改善你的设计,尽可能的少用异步。对于一般性的数据库查询,少量的I/O操作是没有必要启动线程的。
•与主线程有交互时用AsyncTask,否则就用Thread
AsyncTask被设计出来的目的就是为了满足Android的特殊需求:非主线程不能操作(UI)组件,所以AsyncTask扩展Thread增强了与主线程的交互的能力。如果你的应用没有与主线程交互,那么就直接使用Thread就好了。
•当有需要大量线程执行任务时,一定要创建线程池
线程的开销是非常大的,特别是创建一个新线程,否则就不必设计线程池之类的工具了。当需要大量线程执行任务时,一定要创建线程池,无论是使用AsyncTask还是Thread,因为使用AsyncTask它内部的线程池有数量限制,可能无法满足需求;使用Thread更是要线程池来管理,避免虚拟机创建大量的线程。比如从网络上批量下载图片,你不想一个一个的下,或者5个5个的下载,那么就创建一个CorePoolSize为10或者20的线程池,每次10个或者20个这样的下载,即满足了速度,又不至于耗费无用的性能开销去无限制的创建线程。
•对于想要立即开始执行的异步任务,要么直接使用Thread,要么单独创建线程池提供给AsyncTask
默认的AsyncTask不一定会立即执行你的任务,除非你提供给他一个单独的线程池。如果不与主线程交互,直接创建一个Thread就可以了,虽然创建线程开销比较大,但如果这不是批量操作就没有问题。
•Android的开发没有想像中那样简单,要多花心思和时间在代码上和测试上面,以确信程序是优质的

本文转载自:http://www.jb51.net/article/37122.htm

上一篇: 保存图片到图库
下一篇: 基类的设计
挥挥手
粉丝 0
博文 6
码字总数 865
作品 0
东城
程序员
私信 提问
AsyncTask的缺陷和注意事项

AsyncTask 主要是用来处理后台耗时操作,并将数据更新到主线程的一个工具类。 AsyncTask的执行分为四个步骤,每一步都对应一个回调方法,这些方法不应该由应用程序调用,开发者需要做的就是实...

天王盖地虎626
06/21
27
0
Asynctask解析以及注意事项

说到AsyncTask这个类,好多人其实不太了解。最近看了下代码,把心得分享给大家。 AsyncTask的execute的执行流程为 先调用ThreadPoolExecutor.execute(mFuture); 然后ThreadPoolExecutor.exec...

子曰疯
2015/02/06
197
0
Android AsyncTask 简明用法

AsyncTask 是 Android 提供的一种异步任务处理类,它与线程类 Thread 相比,有以下优势: 1.preExcute() & postExcute()方法不仅可以进行预处理 & 收尾工作,而且它们归属于 UI 线程,所以你...

JavaGG
2011/12/14
5K
4
《Android开发艺术探索》之Android中的线程和线程池

序言 这篇文章主要记录在学习《Android开发艺术探索》第11章的读书笔记,以备日后查用,码字不易转载请注明出处:http://www.jianshu.com/p/64db22fa9bc4 1、Android中扮演线程的有Thread 、A...

在代码下成长
2017/12/06
0
0
IntentService类 和 异步任务(AsyncTask)

IntentService是一个Service类。 IntentService只有1个带String参数的构造方法,所以,在自定义类继承IntentService时,需要在自定义类中显式的调用IntentService带参数的构造方法,并且将自...

梦想家Peng
2016/03/03
173
0

没有更多内容

加载失败,请刷新页面

加载更多

Docker 常用命令速查手册

记录一下docker的日常使用命令,本文主要针对linux + mac操作系统而言,window是否适用不太确定,谨慎使用 <!-- more --> 1. docker进程 docker进程启动、停止、重启,常见的三种case # 启动...

小灰灰Blog
9分钟前
1
0
主流移动端账号登录方式的原理及设计思路

1、引言 在即时通讯网经常能看到各种高大上的高并发、分布式、高性能架构设计方面的文章,平时大家参加的众多开发者大会,主题也都是各种高大上的话题——什么5G啦、AI人工智能啦、什么阿里双...

imtech
16分钟前
3
0
如何递归计算目录中的所有代码行?

我们有一个PHP应用程序,并希望计算特定目录及其子目录下的所有代码行。 我们不需要忽略评论,因为我们只是想弄清楚。 wc -l *.php 该命令在给定目录中运行良好,但忽略子目录。 我当时认为...

技术盛宴
46分钟前
4
0
使用 try-with-resources 优雅关闭资源

我们知道,在 Java 编程过程中,如果打开了外部资源(文件、数据库连接、网络连接等、redis),我们必须在这些外部资源使用完毕后,手动关闭它们。 因为外部资源不由 JVM 管理,无法享用 JVM ...

七弦桐
53分钟前
4
0
04.深入浅出索引(上)

简单来说,索引的出现就是为了提高数据查询效率,就像书的目录一样。 索引的常见模型 索引实现的方式有很多种,所以这里就引入了索引模型的概念,可以用于提高读写效率的数据结构很多,比较常...

scgaopan
56分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部