博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
handler消息机制入门
阅读量:6812 次
发布时间:2019-06-26

本文共 1892 字,大约阅读时间需要 6 分钟。

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     @Override25     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         @Override36         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

你可能感兴趣的文章
Jquery常用技巧(3)
查看>>
Struts2系列——struts2的result
查看>>
UE4 Log
查看>>
ldd 查看程序/动态库 的依赖
查看>>
Revit二次开发之“遍历标高Level”
查看>>
Google APIs .net 客户端库初体验
查看>>
在命令行中打开sqlite的数据库
查看>>
正则表达式点滴(2)
查看>>
Using the Platform MBean Server and Platform MBeans
查看>>
Android开发之日历控件实现
查看>>
SQL修改字段默认值
查看>>
像素和dip之间的相互转换
查看>>
关于”数据库连接串中的 |DataDirectory|”
查看>>
Android Read-only file system 错误 /sdcard问题
查看>>
Beep Driver
查看>>
Perl包和模块
查看>>
Apache Mahout 简介
查看>>
正试图在 os 加载程序锁内执行托管代码
查看>>
Web站点风格切换的实现
查看>>
在 SQLite3 中使用回调函数
查看>>