当前位置: 移动技术网 > 移动技术>移动开发>Android > 关于Android开发中线程和线程池的知识记录

关于Android开发中线程和线程池的知识记录

2018年09月13日  | 移动技术网移动技术  | 我要评论

android 中除了 thread 之外能扮演线程的角色有很多如:asynctask 和 intentservice, handlerthread

asynctask 底层用到了线程池,而 intentservice 和 handlerthread 底层则直接调用了线程。

asynctask 封装了线程池和 handler,其主要是为了开发者在子线程中更新 ui ;

handlerthread是一种具有消息循环的线程,在它的内部可以使用 handler;

intentservice 是一个服务,对其进行封装,使其可以更方便的执行后台任务 intentservice 内部使用了 handlerthread 来执行任务,当任务执行完成之后 intentservice 会自动退出。

从任务执行的角度来看, intentservice 更像是一种后台线程,但是 intentservice 又是一种服务,它不容易被系统杀死,所以可以保证任务能够一直执行。而如果只是后台进程,那么这个进程的优先级就会非常低,很容易被后台杀死。

在操作系统中,线程是操作系统调度的最小的单元,同时线程又是一种受限制的系统资源,即线程是不可能无限制的产生,并且线程的创建和销毁都会有相应的开销,所以在 android 中为了避免线程的无限创建,因此有了线程池的概念,主要是通过 executor 来派生特定类型的线程池,不同种类的线程池又具有各自的特性。

android aysnctask 从角度简单理解它的使用限制原因

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网