AsyncTask的限制你了解吗?

平时我们要做一些耗时操作的时候,往往第一选择会选AsyncTask来进行。

那么面试时对于AsyncTask一般会提什么问题呢?下面我们来了解一下。

AsyncTask的使用

当我们用它来做异步操作的时候,它有两个接口可以使用

· execute(Params …)

· executeOnExecutor(Executor exec, Params …)

这两个方法有什么区别呢?

其实当我们用它来做单个的异步任务操作时没什么区别,意思就是说,比较当前更新UI只需要请求某个网络接口,或者只需要读某个单个文件,这时候用哪个都行。

但是当需要多个异步操作同时进行时,就只能用第二个接口了。

原因:

AsyncTask在默认情况下是串行操作的,也就是说它会执行完当前任务结束后才进行下一个任务。

其实这个限制是在3.0以后才有的,2.3的时候呢默认是会用5个线程进行并发操作。

AsyncTask的限制

明白了上面的区别,那么当我们需要多个异步操作同时进行时怎么办呢。这时候我们就需要用 executeOnExecutor(),

第一个参数可以指定不同的线程池方式,

1 无限制线程池的方式(但其实数量是有上限的,可以尝试一下)

new AsyncTask<String, Integer, String>() {

    @Override

    protected String doInBackground(String... strings) {

        return null;

    }

}.executeOnExecutor(Executors.newCachedThreadPool(),"");

2 限制为n个线程同时进行

new AsyncTask<String, Integer, String>() {

    @Override

    protected String doInBackground(String... strings) {

        return null;

    }

}.executeOnExecutor(Executors.newFixedThreadPool(n),"");
总结

所以面试时对于AsyncTask的问题应该有把握了吧,

· 首先它在3.0之后默认情况下是串行进行的

· 2.3的时候它默认5个线程并发进行

· 如果需要应对多个任务并发的时候,就需要用executeOnExecutor指定线程池的实现方式

原文发布于微信公众号 - Android每日一讲(gh_f053f29083b9)

原文发表时间:2018-03-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏java一日一条

每个 Android 开发者必须知道的消息机制问题总结

不能,一个线程对应一个Looper对象,通过ThreadLocal保证一个线程只有一个Looper与之对应,如果多次调用Looper.prepare();则会抛...

1013
来自专栏大内老A

《WCF的绑定模型》博文系列汇总[共6篇]

从整个基础构架的层次结构上讲,WCF可以分成两个部分:服务模型层(Service Mode Layer)和信道层(Channel Layer)。服务模型层建立在...

1889
来自专栏蓝天

Linux上的TIME_WAIT和tcp_fin_timeout

当Linux服务器的TIME_WAIT过多时, 通常会想到去修改参数降低TIME_WAIT时长, 以减少TIME_WAIT数量,但Linux并没有提供这样...

1444
来自专栏码神联盟

ActiveMQ入门篇一入门实例2

继上两期的ActiveMQ的概念原理和经典示例之后,本期将隆重推出ActiveMQ是如何与SpringMVC进行集成使用的。 老规矩,在开始之前,先来点与之相关...

3469
来自专栏LIN_ZONE

windows环境下 php 将office文件(word/excel/ppt)转化为pdf(转)

2.使用office提供的服务 (注:这在windows服务器上,并且服务器上面安装了版本比较高的office)

1452
来自专栏七夜安全博客

Python3实现ICMP远控后门(上)

2093
来自专栏JavaQ

TCP的三次握手和四次挥手

TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP工作在网络OSI七...

3406
来自专栏玄魂工作室

Python黑帽编程 3.2 ARP监控

Python黑帽编程 3.2 ARP监控 在第3.1节《ARP欺骗》中,我们学习了ARP的基本原理,使用Python实现了我们自己的ARP欺骗工具。在上一节的基...

3426
来自专栏开发与安全

linux网络编程之TCP/IP基础(五):分析一帧基于UDP的TFTP协议帧

下图是UDP的段格式: ? 相比TCP段格式,UDP要简单得多,也没啥好说的,需要注意的是UDP数据长度指payload加上首部的长度。 下面分析一帧基于UDP...

2077
来自专栏developerHaoz 的安卓之旅

Android 一起来看看面试必问的消息机制

Android 消息机制的主要是指的是 Handler 的运行机制以及 Handler 所附带的 MessageQueue 和 Looper 的工作过程,这三者...

913

扫码关注云+社区

领取腾讯云代金券