做Android的都知道,AsynTask 就是google 给我提供的一个在另一个线程 执行任务的工具. 从某种层面上将 , 他就是实现了 java 里面的Thread 的功能
但是经常在网上看到说, 推荐使用AsynTask 少用Thread 这是为什么?
我也看了下 AsynTask 的源码 其实挺简单的, 里面有两个 静态的线程池, 一个是同步线程池, 该线程最多可同时执行128个线程 一个是顺序执行的线程, 只有上一个线程执行完毕才执行下一个线程,

我们在使用AsynTask 的时候可以选择不同的方式去执行


new AsyncTask<Void, Void, Void>() {    @Override    protected Void doInBackground(Void... params) {        return null;    }}.executeOnExecutor(AsyncTask.SERIAL_EXECUTOR);

public static final Executor THREAD_POOL_EXECUTOR        = new ThreadPoolExecutor(CORE_POOL_SIZE, MAXIMUM_POOL_SIZE, KEEP_ALIVE,                TimeUnit.SECONDS, sPoolWorkQueue, sThreadFactory);public static final Executor SERIAL_EXECUTOR = new SerialExecutor();


ok 基本明白了 AsynTask 的工作原理 那么为什么推荐使用AsynTask呢?
原因有: 开辟线程是很费时间的, 所有用线程池会好一些
那为什么不自己整一个线程池呢? 其实也可以自己整一个线程池, 但是自己如果管理的不好也是会造成一些问题, 看过一些代码, 在一些逻辑处理的类中, 都new 了一个线程池, 这个我们在执行线程的时候,看似是在使用线程池, 没有单独的new 线程, 但是new 了很多线程池 这个难免也 很耗性能

问了认识的大牛, 他们说他们公司规定 线程都用AsynTask , 不能自己new Thread 或new线程池 这样是为了在性能分析的时候方便一些, 他们之的代码也是很多自己new的Thread 后面在做性能优化的时候 看多很多线程乱七八糟 ,后面都规定使用AsynTask 就规范很多了
还有一点确实好, 那就是在使用AsynTask 确实不自己随意的new Thread 节省一些性能

关于线程分析, 也向那位大牛学到了一些, 就是使用DDMS工具



最后会生成这样的线程数据:



更深入的可以参考这边文章: http://blog.jobbole.com/78995/
关于AsynTask 更深入的分析可以参考下面文章: http://bbs.51cto.com/thread-1114378-1-1.html




更多相关文章

  1. Android自己主动化測试——CTS測试
  2. Android线程通信之Handler
  3. android中非阻塞socket通信
  4. 【移动开发】Android中异步加载数据(一)Handler + Thread
  5. Hackborn的吐槽和Munn的剖析: Android(安卓)graphics低性能背后
  6. 探讨android更新UI的几种方法
  7. Android读书笔记(2)—— IPC机制
  8. Android和用户交互的媒介Activity-生命周期方法
  9. Android之Http网络编程(二)

随机推荐

  1. 美国Android占28%份额 摩托Droid最受欢迎
  2. Android 模拟器横屏竖屏切换设置
  3. Android ContentProvider 多进程multipro
  4. android EditText inputType
  5. .Net 转战 Android 4.4 日常笔记(6)--Andro
  6. Android(安卓)Bluetooth
  7. Android RelativeLayout 的属性
  8. android中使用 EditText 时,设定 inputTyp
  9. 浅谈android的selector,背景选择器
  10. 如何解析 android 中的 XML?