日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

handler消息机制入门

發布時間:2025/3/21 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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消息机制入门的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。