天天看點

HandlerThread二、注意三、什麼是HandlerThread四、執行個體1

一、概念

    1、Android中Handler的使用,一般都在UI主線程中執行,是以在Handler接收消息後,處理消息時,不能做一些很耗時的操作,否則将出現ANR錯誤。

   2、HandlerThread繼承于Thread,是以它本質就是個Thread。(本身是一個線程)

   3、與普通Thread的差别就在于,主要的作用是建立了一個線程,并且創立了消息隊列,有自己的looper,可以讓我們在自己的線程中分發和處理消息。

    1、Handler的處理過程運作在建立Handler的線程裡

    2、一個線程對應一個Looper,一個Looper對應一個MessageQueue,一個Looper可以對應多個Handler。

    3、handler應該由處理消息的線程建立。

    4、handler與建立它的線程相關聯,而且也隻與建立它的線程相關聯。handler運作在建立它的線程中,是以,如果在handler中進行耗時的操作,會阻塞建立它的線程。

     5、Looper.myLooper();        //獲得目前的Looper

        Looper.getMainLooper()   //獲得UI線程的Lopper

     6、Handle的初始化函數(構造函數),如果沒有參數,那麼他就預設使用的是目前的Looper,如果有Looper參數,就是用對應的線程的Looper。

     7、如果一個線程中調用Looper.prepare(),那麼系統就會自動的為該線程建立一個消息隊列,然後調用Looper.loop();之後就進入了消息循環,這個之後就可以發消息、取消息、和處理消息。

        Android的線程分為有消息循環的線程和沒有消息循環的線程,有消息循環的線程一般都會有一個Looper。事實上Android提供了一個封裝好的帶有looper的線程類,即為HandlerThread

執行個體2

注意:寫 MHandlerThread 的時候,最好寫上線程的優選級

繼續閱讀