HandlerThread
HandlerThread繼承了Thread,它是一種可以使用Handler的Thread,他默認(rèn)在run方法中創(chuàng)建looper開啟消息循環(huán)
IntentService
IntentService是一種特殊的Service,可用于后臺執(zhí)行耗時操作,當(dāng)任務(wù)執(zhí)行完成后會自動停止,由于IntentService是服務(wù)的原因,他的優(yōu)先級比普通的線程要高,適合執(zhí)行一些高優(yōu)先級的后臺任務(wù),IntentService內(nèi)部封裝了HandlerThread和Handler
IntentService在onCreat()方法中會構(gòu)造出HandlerThread和Handler對象,每次啟動IntentService,它的onStartCommand方法會被執(zhí)行,onStartCommand方法回調(diào)用onStart方法,在onStart中會通過handler發(fā)送消息,在handler的handleMessage方法中,會調(diào)用onHandleIntent()方法
Android中最常見的四類具有不同功能的線程池
- FixedThreadPool
線程數(shù)量固定的線程池,當(dāng)線程處于空閑狀態(tài)時,他們并不會被回收,除非線程池被關(guān)閉了,當(dāng)所有的線程處于活動狀態(tài)時,新任務(wù)都會處于等待狀態(tài),直到有線程空閑出來,由于FixedThreadPool只有核心線程,并且這些核心線程不會被回收,這意味著能更加快速的響應(yīng)外界的請求,F(xiàn)ixedThreadPool中核心線程沒有超時機(jī)制,并且任務(wù)隊(duì)列也沒有大小限制 - CachedThreadPool
線程數(shù)量不固定的線程池,它只有非核心線程,并且其最大線程數(shù)為Integer.MAX_VALUE,線程池中的空閑線程都有超時機(jī)制,這個超時時長為60秒,超過六十秒后線程會被回收 - ScheduledThreadPool
它的核心線程數(shù)是固定的,而非核心線程數(shù)是沒有限制的,并且非核心線程數(shù)空閑后會立即被回收 - SingleThreadExecutor
這類線程池內(nèi)部只有一個核心線程,它確保所有的任務(wù)都在同一個線程中按順序執(zhí)行。