线程在Android中是一个很重要的概念,从用途上来说,线程分为主线程和子线程,主线程主要处理和界面相关的事情,而子线程则往往用于执行耗时操作。由于Android的特性,如果在主线程中执行耗时操作那么就会导致程序无法及时响应,因此耗时操作必须在子线程中执行。除了Thread,Android中扮演线程角色的还有很多,比如AcyncTask和IntentService,同时HandlerThread也是一种特殊线程,但是他们本质上也是一种特殊的线程。
AsyncTask封装了线程池和Handler,主要为了方便在子线程中更新UI。HandlerThread是一种具有消息循环的线程,在它的内部可以使用Handler.IntentService是一个服务,IntentService内部采用HandlerThread来执行任务,当任务执行完毕后,IntentService自动退出。从任务执行来看,IntentService的作用很像一个后台线程,但是IntentService是一种服务,它不容易被系统杀死从而尽量保证任务的执行,而如果是一个后台线程,由于这个时候进程中没有活动的四大组件,那么这个进程的优先级就会很低,很容易被系统杀死,这就是IntentService的优点。
主线程主要处理用户操作和运行四大组件。子线程则是执行耗时操作,比如网络请求,I/O操作等。