課程
/移動開發
/Android
/Android面試??虷andler詳解
通過老師的圖解終于把handler和looper的關系搞明白了,但是現在又有疑問了,為什么要一個looper,looper存在的意義是什么?
2016-03-22
源自:Android面試??虷andler詳解 4-2
正在回答
Android系統的消息隊列和消息循環都是針對具體線程的,一個線程可以存在(當然也可以不存在)一個消息隊列 和一個消息循環(Looper),特定線程的消息只能分發給本線程,不能進行跨線程,跨進程通訊。但是創建的工作線程默認是沒有消息循環和消息隊列的,如果想讓該線程具有消息隊列和消息循環,需要在線程中首先調用Looper.prepare()來創建消息隊列,然后調用Looper.loop()進入消息循環。
一個Message經由Handler的發送,MessageQueue的入隊,Looper的抽取,又再一次地回到Handler的懷抱中。而繞的這一圈,也正好幫助我們將同步操作變成了異步操作。
---------以上答案?摘自網上------------
在此情況下,如果沒有Looper,Handler只發送消息,沒有回傳,就不能執行到handleMessage()方法,所以還是不能處理消息,更新UI等。
舉報
學Android開發,必學Handler,也是Android面試常客
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2016-03-22
Android系統的消息隊列和消息循環都是針對具體線程的,一個線程可以存在(當然也可以不存在)一個消息隊列 和一個消息循環(Looper),特定線程的消息只能分發給本線程,不能進行跨線程,跨進程通訊。但是創建的工作線程默認是沒有消息循環和消息隊列的,如果想讓該線程具有消息隊列和消息循環,需要在線程中首先調用Looper.prepare()來創建消息隊列,然后調用Looper.loop()進入消息循環。
一個Message經由Handler的發送,MessageQueue的入隊,Looper的抽取,又再一次地回到Handler的懷抱中。而繞的這一圈,也正好幫助我們將同步操作變成了異步操作。
---------以上答案?摘自網上------------
在此情況下,如果沒有Looper,Handler只發送消息,沒有回傳,就不能執行到handleMessage()方法,所以還是不能處理消息,更新UI等。