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

https://www.cnblogs.com/lifexy/archive/2020/02/13/12304228.htmlhtml


1.Handler介绍

Handler 是一个消息分发对象。handler是Android给咱们提供用来更新UI的一套机制,也是一套消息处理机制,经过它能够实如今不一样线程之间传递消息java

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

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

 

2.MainActivity.java以下所示:app

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以下所示:tcp

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); } }

运行打印:ide

 

相关文章
相关标签/搜索