前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >14.Android-使用sendMessage线程之间通信

14.Android-使用sendMessage线程之间通信

作者头像
诺谦
发布2020-02-23 14:23:33
1.5K0
发布2020-02-23 14:23:33
举报
文章被收录于专栏:Linux驱动Linux驱动

1.Handler介绍

Handler 是一个消息分发对象。handler是Android给我们提供用来更新UI的一套机制,也是一套消息处理机制,通过它可以实现在不同线程之间传递消息

本章Handler类要用到的方法有:

代码语言:javascript
复制
void handleMessage(Message msg);    //需要重写的方法,用来处理接收的消息,只有当接收到发送者发来的消息,才会回调该方法
Message obtainMessage();           //获取一个消息对象
boolean sendMessage(Message msg); //发送消息对象,发送成功的话,就会回调handleMessage()方法

2.MainActivity.java如下所示:

代码语言:javascript
复制
package com.example.tcpdemo;

import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.app.Activity;
import android.view.Menu;

public class MainActivity extends Activity {

    MyThread mt;
    
    //定义一个handler
    public Handler mHandler = new Handler() {
        public void handleMessage(Message msg) {
            //打印发送者发来的消息
            System.out.println("main what:"+msg.what);
            System.out.println("main obj:"+msg.obj.toString());
            System.out.println("main arg1:"+msg.arg1);
            
        };
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        mt = new MyThread();
        mt.setHandler(mHandler);    //设置handler
        mt.start();    //启动线程
        
       
    }
}

3.MyThread.java如下所示:

代码语言:javascript
复制
package com.example.tcpdemo;


import android.os.Handler;
import android.os.Message;

public class MyThread extends Thread {
    
        
        public Handler mHandler=null;
        
        //获取另一个线程的Handler
        public void setHandler( Handler handler){
            mHandler = handler;
        }
        
        public void run(){
           
             try { //让线程睡眠3s。
                    Thread.sleep(3000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
             
             Message msg = mHandler.obtainMessage(); 
             //设置发送的内容
             msg.arg1 = 1;  
             msg.what = 3;  
             msg.obj = "this is MyThread"; 
             mHandler.sendMessage(msg);  
        }
}

运行打印:

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-02-13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.Handler介绍
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档