1.Handler介绍

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

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

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

2.MainActivity.java如下所示:

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

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 = ;
msg.what = ;
msg.obj = "this is MyThread";
mHandler.sendMessage(msg);
}
}

运行打印:

最新文章

  1. TechEmpower 13轮测试中的ASP.NET Core性能测试
  2. Buddy内存分配算法
  3. ASP.net MVC 学习笔记(一)-一些不同点
  4. elipse 从eclipse导入maven项目
  5. 关于Storyboard的使用
  6. 欧拉函数 &【POJ 2478】欧拉筛法
  7. Linux SUID SGID 讲解
  8. linux设备驱动层次
  9. Intellij IDEA13 创建多模块Maven项目
  10. js 用window.open(参数) 打开新窗口,在新窗口怎么获取传过来的参数
  11. UVa 11529 (计数) Strange Tax Calculation
  12. 盘点 OSX 上最佳的 DevOps 工具
  13. VS2005 MFC 预编译头文件来自编译器的早期版本,或者预编译头为 C++ 而在 C 中使用它(或相反)
  14. iOS面试题及答案
  15. node.js之require
  16. Find、FindAll、Where的区别
  17. [Swift]LeetCode114. 二叉树展开为链表 | Flatten Binary Tree to Linked List
  18. 趋势:flex和grid使布局更简单
  19. Python校验用户名是否合法示例
  20. 学习Python第六天

热门文章

  1. 一图胜千言elasticsearch(lucene)的内存管理
  2. C++内存管理与注意事项
  3. jvm内存模型、常见参数及调优
  4. 个人第4次作业——alpha项目测试
  5. Dynamics 365 CRM 在 Connected Field Service 中部署 IoT Central (二)- 匹配设备
  6. 完美实现STM32单总线挂多个DS18B20
  7. 线性最长cover(无讲解)
  8. JS-09-数组
  9. Python3基础之内置模块
  10. mongodb centos7 安装