Android的Handler機制用法
阿新 • • 發佈:2019-02-03
使用handler一般是在擁有執行緒的情況下進行使用,一方面可以對執行緒進行把控,另一方面也可以防止我們的app出現UI程序阻塞情況。
大致的解釋就是:一個新起的執行緒在執行,我們可以利用handler進行一個sendMsg,然後接收到這個msg後,執行一些我們的操作。
handler可以很好的進行執行緒的把控。
包括有些程式碼,不能在主執行緒執行,例如:我想對網路圖片進行載入,並且將網路圖片的url要轉換成Bitmap型別,然後將圖片以字串的形式post到服務端。
這裡進行圖片url轉bitmap的時候,就不可以在主執行緒進行。
所以,就用到了我們的執行緒的把控,當你url轉到bitmap以後,我在對你的圖片進行post。
利用handler就可以輕鬆的解決了。
張貼一部分關鍵的程式碼,看完上述的描述,應該也差不多可以理解了。
程式碼只是輔助的理解。
final Handler handler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); if (msg.what == 0x123) { //相應的操作 } } };
new Thread(new Runnable() { @Override public voidrun() { // TODO Auto-generated method stub // 在此執行耗時工作,執行完畢後呼叫handler傳送訊息 try { // TODO: http request. Message msg = new Message();handler.sendEmptyMessage(0x123); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }).start();
我自己對於handler的研究,目前還不是特別透徹,包括底層的一些結構,不知也就不寫了,免得誤人子弟。大家權當一看,等我學的更加完善的時候,會繼續進行修改更新。