Android中的Handler, AsyncTask, Thread和Service相关
cfanr Lv4

Android中Handler和AsyncTask的区别

注:AsyncTask在1.6前是串行的,在1.6开始采用并行,不过到3.0又改回串行,避免并行带来的错误(在1.6-3.0以前,系统默认最大并发执行5个线程,缓冲线程队列最大128个,10个任务的等待,超过会出现java.util.concurrent.RejectedExecutionException异常。在3.0以后,无论有多少任务,都会在其内部单线程执行;)
3.1系统以上,可以调用new AsyncTask().executeOnExecutor(Executor exec, Params… params)自定义线程池执行

附:

Android中Service和Thread的区别?

先看张图,原帖:Difference between Android Service,Thread,IntentService and AsyncTask

对于Service,官方文档是这样说的,

A Service is not a separate process. The Service object itself does not imply it is running in its own process; unless otherwise specified, it runs in the same process as the application it is part of.
A Service is not a thread. It is not a means itself to do work off of the main thread (to avoid Application Not Responding errors).

Service不是单独的进程。它并不一定是运行在自己的独立进程中,可能是作为应用进程的一部分。(当它是Local Service时,运行在主进程的main线程中;当它是Remote Service时, 运行在独立进程的main线程中)
Service不是线程。它不能离开主线程工作,所以为了避免ANR,在Service中不能做耗时的操作(需要做时,必须新建一个子线程)

Service是Android的四大组件之一,用于执行长时间运行后台的任务,优先级高于Activity,也高于在Activity创建的Thread,不容易被杀死;而Thread只是程序执行的最小单元,分配CPU的基本单位。故Thread和Service是没有任何关系的。

附: