1. HandlerThread
Handler与HandlerThread区别,HandlerThread应用(对比AsyncTask)
备注:
Handler机制的分发中心就在Looper中的loop(),loop()方法是一个阻塞方法(里面包含一个for无限循环),HandlerThread将loop转到子线程中处理,降低了主线程的压力,使主界面更流畅,提高用户的交互体验。
2. 使用HandlerThread步骤:
(1)创建HandlerThread的线程实例
(2)调用HandlerThread的start()方法,开启线程
(3)传入HandlerThread的looper实例,从而创建Handler实例为MsgHandler,MsgHandler属于HandlerThread线程。
(4)重写上面MsgHandler实例的handlemessage方法,在这里面可以进行耗时的操作:访问网络,数据库等等(运行在子线程HandlerThread之中)
(5)运行之后需要更新UI,这个时候需要跟主线程交互。这个时候,在再次创建一个Handler实例为mHandler,使用Handler的参数为空的构造方法,这样创建出来的mHandler默认属于UI线程的(默认传入当前主线程的looper实例)。
(6)回到MsgHandler的handlemessage方法,使用mHandler.post(Runnable r)方法完成UI更新。