android 中除了 thread 之外能扮演线程的角色有很多如:asynctask 和 intentservice, handlerthread
asynctask 底层用到了线程池,而 intentservice 和 handlerthread 底层则直接调用了线程。
asynctask 封装了线程池和 handler,其主要是为了开发者在子线程中更新 ui ;
handlerthread是一种具有消息循环的线程,在它的内部可以使用 handler;
intentservice 是一个服务,对其进行封装,使其可以更方便的执行后台任务 intentservice 内部使用了 handlerthread 来执行任务,当任务执行完成之后 intentservice 会自动退出。
从任务执行的角度来看, intentservice 更像是一种后台线程,但是 intentservice 又是一种服务,它不容易被系统杀死,所以可以保证任务能够一直执行。而如果只是后台进程,那么这个进程的优先级就会非常低,很容易被后台杀死。
在操作系统中,线程是操作系统调度的最小的单元,同时线程又是一种受限制的系统资源,即线程是不可能无限制的产生,并且线程的创建和销毁都会有相应的开销,所以在 android 中为了避免线程的无限创建,因此有了线程池的概念,主要是通过 executor 来派生特定类型的线程池,不同种类的线程池又具有各自的特性。
android aysnctask 从角度简单理解它的使用限制原因
如对本文有疑问, 点击进行留言回复!!
Android SDK Manager 不知为什么突然打不开了?看这里
监听Android系统发出的插入SD卡并且已正确安装(识别)时发出的广播
RecyclerView三种常用效果的实现方法-android-kotlin
Android Studio app启动错误 Error running :Default Activity not found
网友评论