handler消息机制入门

本文介绍如何使用Handler机制在Android应用中实现子线程与主线程之间的消息传递。通过实例演示了如何在网络请求或其他耗时操作完成后更新UI。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值