handler消息机制入门
生活随笔
收集整理的這篇文章主要介紹了
handler消息机制入门
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
handler消息機制入門
?
?為什么要用handle?
我們在網絡上讀取圖片信息時,是不能把耗時操作放在主線程里面的,當我們在子線程中獲取到了圖片的消息的時候,我們就需要把這個數據傳給主線程。
而直接使用全局變量是不得行的,因為主線程里面的?tv_txt.setText(str);語句都執行完了后,子線程才給str傳值。
所以我們需要用到handle。
把子線程獲取到的數據放在消息中,然后再handle中處理消息,因為handle被主線程調用,所以這個消息數據最后可以更新主頁面。
?
1 package com.example.handlerrumen; 2 3 import android.app.Activity; 4 import android.os.Bundle; 5 import android.os.Handler; 6 import android.os.Looper; 7 import android.os.Message; 8 import android.util.Log; 9 import android.widget.TextView; 10 11 public class MainActivity extends Activity { 12 private TextView tv_txt; 13 private Handler handler=new Handler(){ 14 //處理消息(被主線程執行) 15 public void handleMessage(Message msg) { 16 String str=(String) msg.obj; 17 tv_txt.setText(str); 18 19 //判斷當前函數是否被主線程調用的方式 20 // boolean result=Looper.getMainLooper()==Looper.myLooper(); 21 // Log.d("bh",result+""); 22 }; 23 }; 24 @Override 25 protected void onCreate(Bundle savedInstanceState) { 26 super.onCreate(savedInstanceState); 27 setContentView(R.layout.activity_main); 28 tv_txt=(TextView) findViewById(R.id.tv_txt); 29 //創建子線程,并啟動 30 MyThread myTh=new MyThread(); 31 myTh.start(); 32 } 33 //自定義子線程 34 class MyThread extends Thread{ 35 @Override 36 public void run() { 37 //偽代碼來體現 38 try { 39 Thread.sleep(6000); 40 Log.d("bh","訪問到網絡了"); 41 String str="我是網絡數據"; 42 //創建message對象 43 Message msg=new Message(); 44 msg.obj=str; 45 //發送一個消息 46 handler.sendMessage(msg); 47 } catch (InterruptedException e) { 48 e.printStackTrace(); 49 } 50 } 51 } 52 }?
轉載于:https://www.cnblogs.com/Renyi-Fan/p/7482752.html
總結
以上是生活随笔為你收集整理的handler消息机制入门的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ZooKeeper官方文档资源
- 下一篇: 微信网页开发