【转】 Pro Android学习笔记(九五):AsyncTask(4):执行情况
文章转载只能用于非商业性质,且不能带有虚拟货币、积分、注册等附加条件。转载须注明出处:http://blog.csdn.net/flowingflying/
两个AsyncTask对象的运行情况
我们看看唤起两个AsyncTask对象的执行情况:
private void testMultiMyLongTask(){
MyLongTask task1 = new MyLongTask(this, "Multi One");
task1.execute("MultiOne","my","dear","friends");
MyLongTask task2 = new MyLongTask(this, "Multi Two");
task2.execute("MultiTwo","hello","world");
}
初看这段代码,我们会想象着两个task的worker线程会先后几乎同时一起运行,然而实际的测试结果是,task2的worker线程在等待task1的worker线程执行完后才运行,图为运行结果。
出现这种情况,最合理的猜测就是这两个worker线程实际是同一线程,这也很容易在log中验证。
在Android的参考文档对此有解释:task从线程池中获取线程,Android的不同版本有不同的处理方式,在最早的版本是同一后台线程,后来改为允许多个task并行执行,而在HONEYCOMB之后又改回同一线程,避免并行执行引发的错误。
如果我们一定需要并行执行,就是用executeOnExecutor(Executor, Params...),如下:
private void testMultiMyLongTask(){
MyLongTask task1 = new MyLongTask(this, "Multi One");
task1.execute("MultiOne","my","dear","friends");
MyLongTask task2 = new MyLongTask(this, "Multi Two");
//task2.execute("MultiTwo","hello","world");
task2.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR,"MultiTwo","hello","world");
}
执行情况如下:
多次执行的异常
如果我们创建了一个AsyncTask的对象,多次执行execute()会报错,如下图所示,一个对象只能运行一次worker线程。
相关小例子源代码可在Pro Android学习:AsyncTask小例子中下载。
相关链接: 我的Android开发相关文章
【转】 Pro Android学习笔记(九五):AsyncTask(4):执行情况的更多相关文章
- Pro Android学习笔记 ActionBar(1):Home图标区
Pro Android学习笔记(四八):ActionBar(1):Home图标区 2013年03月10日 ⁄ 综合 ⁄ 共 3256字 ⁄ 字号 小 中 大 ⁄ 评论关闭 ActionBar在A ...
- 【转】 Pro Android学习笔记(八二):了解Package(1):包和进程
文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://blog.csdn.net/flowingflying/ 在之前,我们已经学习了如何签发apk,见P ...
- 【转】 Pro Android学习笔记(六七):HTTP服务(1):HTTP GET
目录(?)[-] HTTP GET小例子 简单小例子 出现异常NetworkOnMainThreadException 通过StrictMode进行处理 URL带键值对 Andriod应用可利用ser ...
- 【转】 Pro Android学习笔记(五五):调试和分析(3):adb命令、模拟器控制台和StrictMode
目录(?)[-] adb命令 模拟器Console StrictMode adb命令 我们在学习SQLite的使用,介绍过部分adb命令的使用,见Pro Android学习笔记(五):了解Conten ...
- 【转】 Pro Android学习笔记(五六):配置变化
目录(?)[-] Activity的destorycreate过程 Fragment的destorycreate过程 onSaveInstanceState saveFragmentInstanceS ...
- 【转】 Pro Android学习笔记(五二):ActionBar(5):list模式
可以在action bar中加入spinner的下来菜单,有关spinner,可以参考Pro Android学习笔记(二十):用户界面和控制(8):GridView和Spinner. list的样式和 ...
- 【转】 Pro Android学习笔记(四二):Fragment(7):切换效果
目录(?)[-] 利用setTransition 利用setCustomAnimations 通过ObjectAnimator自定义动态效果 程序代码的编写 利用fragment transactio ...
- 【转】 Pro Android学习笔记(四十):Fragment(5):适应不同屏幕或排版
目录(?)[-] 设置横排和竖排的不同排版风格 改写代码 对于fragment,经常涉及不同屏幕尺寸和不同的排版风格.我们在基础小例子上做一下改动,在横排的时候,仍是现实左右两个fragment,在竖 ...
- 【转】 Pro Android学习笔记(三五):Menu(6):XML方式 & PopUp菜单
目录(?)[-] 利用XML创建菜单 XML的有关属性 onClick事件 Pop-up菜单 利用XML创建菜单 在代码中对每个菜单项进行设置,繁琐且修改不灵活,不能适配多国语言的要求,可以利用资源进 ...
- 【转】 Pro Android学习笔记(三三):Menu(4):Alternative菜单
目录(?)[-] 什么是Alternative menu替代菜单 小例子说明 Alternative menu代码 关于Category和规范代码写法 关于flags 多个匹配的itemId等参数 什 ...
随机推荐
- NumPy算数运算
NumPy - 算数运算 用于执行算术运算(如add(),subtract(),multiply()和divide())的输入数组必须具有相同的形状或符合数组广播规则. 示例 import numpy ...
- 新东方雅思词汇---8.1、reckon
新东方雅思词汇---8.1.reckon 一.总结 一句话总结:reck(注意,留心)+on 英 ['rek(ə)n] 美 ['rɛkən] vt. 测算,估计:认为:计算 vi. 估计:计算:猜 ...
- python学习笔记(SMTP邮件发送)
想着给框架添加邮件发送功能.所以整理下python下邮件发送功能 首先python是支持邮件的发送.内置smtp库.支持发送纯文本.HTML及添加附件的邮件 之后是邮箱.像163.qq.新浪等邮箱默认 ...
- Git GUI 的使用
下面,我们开始使用Git Gui 如果你想init一个本地的git仓库,到你的代码根目录下,右键选择Git Init Here 这时,你会发现在代码根目录下,生成了一个.git的隐藏属性目录. 再选择 ...
- Appium 自动化测试(5)-- Appium详细介绍:Appium 手机自动化测试_TesterHome公开版pdf
- web自动化流程总结
一. 了解需求,什么是系统的核心业务 二. 编写测试用例:用例名称,前置条件,测试数据,测试步骤,期望结果 三. 自动化代码的初步构建:所有的元素定位.元素操作.测试用例都写在一个模块中 问题: 1. ...
- C# 语言版本
(摘自:维基百科)https://en.wikipedia.org/wiki/C_Sharp_(programming_language) Versions Version Language spec ...
- POJ 1062 限制点
http://poj.org/problem?id=1062 昂贵的聘礼 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 50 ...
- New Concept English three (29)
1听力和打字训练: 31w/m 54 typing errors Whether we find a joke funny or not largely depends on were we have ...
- 【网络】<网络是怎样连接的>笔记
[一] 浏览器 http://user:pwd@hosturl:port/dir/of/file 基本思路: 1.1 生成http请求信息 包含“对什么”“进行怎样的操作”两个方法.一般常用操作是GE ...