博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Handler
阅读量:5370 次
发布时间:2019-06-15

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

一、work线程向main线程发送数据(work线程发数据,main线程处理数据

public class MainActivity extends Activity {       private Button button;    private TextView textView;    private Handler handler;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        button = (Button)this.findViewById(R.id.button1);        textView = (TextView)this.findViewById(R.id.textView1);         handler = new MyHandler();        button.setOnClickListener(new OnClickListener() {                        @Override            public void onClick(View arg0) {
new Thread(){ @Override public void run() { super.run(); Thread.currentThread().getName();//获取当前线程的名字 Message msg = Message.obtain(); String s = "hello handler"; msg.obj = s; handler.sendMessage(msg); } }.start(); } }); } public class MyHandler extends Handler{ @Override public void handleMessage(Message msg) { super.handleMessage(msg); String s = (String)msg.obj; textView.setText(s); } }}

 二、main线程向work线程发送数据(main线程发数据,work线程处理数据)

 

public class MainActivity extends Activity {    private Button button;    private TextView textView;    private Handler handler;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        button = (Button)this.findViewById(R.id.button);        textView = (TextView)this.findViewById(R.id.textview);                button.setOnClickListener(new OnClickListener() {                        @Override            public void onClick(View v) {                Message msg = Message.obtain();                msg.obj = "handler2";                handler.sendMessage(msg);            }        });        new Thread(){            @Override            public void run() {                super.run();                Looper.prepare();//第一步                handler = new Handler(){
//第二步 @Override public void handleMessage(Message msg) { super.handleMessage(msg); String s = (String) msg.obj; System.out.println(s); } }; Looper.loop();//第三步 } }.start(); }}

 

三、Handler、Looper、MessageQueue的工作原理 

 

 

 

handler可以在任意线程发送消息

 

一个线程可以有多个Handler,但是只能有一个Looper!

 

转载于:https://www.cnblogs.com/stallran/p/3739825.html

你可能感兴趣的文章
Android上传头像代码,相机,相册,裁剪
查看>>
git 安装体验
查看>>
Oracle 给已创建的表增加自增长列
查看>>
《DSP using MATLAB》Problem 2.17
查看>>
if 循环
查看>>
uva 111 History Grading(lcs)
查看>>
Python学习week2-python介绍与pyenv安装
查看>>
php判断网页是否gzip压缩
查看>>
一个有意思的js实例,你会吗??[原创]
查看>>
sql server中bit字段实现取反操作
查看>>
Part3_lesson2---ARM指令分类学习
查看>>
jQuery拖拽原理实例
查看>>
JavaScript 技巧与高级特性
查看>>
Uva 11729 Commando War
查看>>
增强学习(一) ----- 基本概念
查看>>
ubuntu下USB连接Android手机
查看>>
C# 语句 分支语句 switch----case----.
查看>>
反射获取 obj类 的属性 与对应值
查看>>
表单中的readonly与disable的区别(zhuan)
查看>>
win10下安装配置mysql-8.0.13--实战可用
查看>>