俗話說 Handler機制

Handler

Handler,? 快遞員

MessageQueen? 投遞站

Looper? 理解為報告系統(tǒng)

通過Handler 可以發(fā)快遞,也可以收快遞

handMessage 對應: 投遞員從投遞站中取到快件后會根據(jù)快件的信息送到客戶手中,

sendMessage 對應: 投遞員從多個客戶手中收到要寄送的快遞,送回自己所屬的快遞站

looper? 對應: 快遞站每隔一定時間會來一輛拖運車將快遞站收到的快遞一件一件的拉走,發(fā)到目標地的快遞站

目的地的快遞員從從投遞站中取到快件后會根據(jù)快件的信息送到客戶手中,這一步又回到handMessage

快遞員只能處理所屬公司快遞站的快件進行投或送

Handler只能處理自己歸屬MessageQueen收發(fā)的Message

? ? 快遞公司只能讓一套物流輪循系統(tǒng)收集自己屬下快遞站的快件,不可能有多個分支物流同時處理

當前線程,只能有一個looper來循環(huán)MessageQueen進行收發(fā)消息

一個線程只能有一個looper, prepare為創(chuàng)建looper的方法

public static void prepare() {

? ? prepare(true);

}

private static void prepare(boolean quitAllowed) {

? ? if (sThreadLocal.get() != null) {

? ? ? ? throw new RuntimeException("Only one Looper may be created per thread");

//每個線程只能有一個looper存在

? ? }

? ? sThreadLocal.set(new Looper(quitAllowed));

}

快遞站建立,物流系統(tǒng)必備的,

looper創(chuàng)建的時候伴生著Messagequeen

private Looper(boolean quitAllowed) {

? ? mQueue = new MessageQueue(quitAllowed);

? ? mThread = Thread.currentThread();

}

一個looper對應一個Messagequeen

快遞公司新開辟市場,想新招快遞員,這個時候因為當?shù)氐奈锪髡具€未建立,沒有物流系統(tǒng),那么快遞員這個時候是沒有服務對象,還沒有正式加入到物流鏈中,所以這個時候新招快遞員是個失敗的決策

在子線程中直接創(chuàng)建Handler會報異常,因為looper還沒有創(chuàng)建,

因為在創(chuàng)建handler的過程中會去取當前線程的looper對象,直接創(chuàng)建的話lopper對象還沒有創(chuàng)建出來,所以會報異常.

所以,要想在子線程中創(chuàng)建handler,必須先調(diào)用looper.prepare方法先創(chuàng)建出looper來

public Handler(Callback callback, boolean async) {

? ? if (FIND_POTENTIAL_LEAKS) {

? ? ? ? final Class<? extends Handler> klass = getClass();

? ? ? ? if ((klass.isAnonymousClass() || klass.isMemberClass() || klass.isLocalClass()) &&

? ? ? ? ? ? ? ? (klass.getModifiers() & Modifier.STATIC) == 0) {

? ? ? ? ? ? Log.w(TAG, "The following Handler class should be static or leaks might occur: " +

? ? ? ? ? ? ? ? klass.getCanonicalName());

? ? ? ? }

? ? }

? ? mLooper = Looper.myLooper(); //此處獲取當前線程的looper

? ? if (mLooper == null) {

? ? ? ? throw new RuntimeException(

? ? ? ? ? ? "Can't create handler inside thread " + Thread.currentThread()

? ? ? ? ? ? ? ? ? ? + " that has not called Looper.prepare()");

? ? }

? ? mQueue = mLooper.mQueue;

? ? mCallback = callback;

? ? mAsynchronous = async;

}

所以正確的打開姿勢:

new Thread(new Runnable() {

? ? @Override

? ? public void run() {

? ? ? ? Looper.prepare();? //創(chuàng)建物流站,對接物流系統(tǒng)

? ? ? ? Handler handler = new Handler();//招聘快遞員

? ? ? ? Looper.loop();? //啟動物流系統(tǒng)

? ? }

}).start();

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末疾党,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子策治,更是在濱河造成了極大的恐慌灌砖,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件坎弯,死亡現(xiàn)場離奇詭異拐袜,居然都是意外死亡,警方通過查閱死者的電腦和手機观话,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來越平,“玉大人频蛔,你說我怎么就攤上這事∏嘏眩” “怎么了晦溪?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長挣跋。 經(jīng)常有香客問我三圆,道長,這世上最難降的妖魔是什么避咆? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任舟肉,我火速辦了婚禮,結果婚禮上查库,老公的妹妹穿的比我還像新娘路媚。我一直安慰自己,他們只是感情好樊销,可當我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布整慎。 她就那樣靜靜地躺著,像睡著了一般围苫。 火紅的嫁衣襯著肌膚如雪裤园。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天剂府,我揣著相機與錄音拧揽,去河邊找鬼。 笑死腺占,一個胖子當著我的面吹牛强法,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播湾笛,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼饮怯,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了嚎研?” 一聲冷哼從身側響起蓖墅,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤库倘,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后论矾,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體教翩,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年贪壳,在試婚紗的時候發(fā)現(xiàn)自己被綠了饱亿。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡闰靴,死狀恐怖彪笼,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蚂且,我是刑警寧澤配猫,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站杏死,受9級特大地震影響泵肄,放射性物質發(fā)生泄漏。R本人自食惡果不足惜淑翼,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一腐巢、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧玄括,春花似錦冯丙、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽风宁。三九已至洁墙,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間戒财,已是汗流浹背热监。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留饮寞,地道東北人孝扛。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像幽崩,于是被迫代替她去往敵國和親苦始。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,843評論 2 354

推薦閱讀更多精彩內(nèi)容