14.Android-使用sendMessage线程之间通信
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);
}
}
运行打印:

14.Android-使用sendMessage线程之间通信的更多相关文章
- (转载) Android两个子线程之间通信
Android两个子线程之间通信 标签: classthreadandroid子线程通信 2015-03-20 17:03 3239人阅读 评论(0) 收藏 举报 分类: 个人杂谈 版权声明:本文为 ...
- Android两个子线程之间通信
Android中,相信主线程和子线程之间的通信大家都不陌生了吧.在一次面试经历中被问到了两个子线程之间是如何进行通信的.哎呦!这可蒙住我了.后来回家研究了下,分享给大家. 其实android中线程通信 ...
- Java线程之间通信
用多线程的目的:更好的利用CPU的资源.因为所有的多线程代码都可以用单线程来实现. 多线程:指的是这个程序(一个进程)运行时产生了不止一个线程. 并行:多个CPU实例或者多台机器同时执行一段处理逻辑, ...
- 线程之间通信 等待(wait)和通知(notify)
线程通信概念: 线程是操作系统中独立的个体,但这些个体如果不经过特殊的处理就不能成为一个整体,线程之间的通信就成为整体的必用方式之一.当线程存在通信指挥,系统间的交互性会更强大,在提高CPU利用率的同 ...
- Android线程---UI线程和非UI线程之间通信
近期自学到了线程这一块,用了一上午的时间终于搞出来了主.子线程间的相互通信.当主线程sendMessage后,子线程便会调用handleMessage来获取你所发送的Message.我的主线程 ...
- Android Service与Activity之间通信的几种方式
在Android中,Activity主要负责前台页面的展示,Service主要负责需要长期运行的任务,所以在我们实际开发中,就会常常遇到Activity与Service之间的通信,我们一般在Activ ...
- java 线程之间通信以及notify与notifyAll区别。
jvm多个线程间的通信是通过 线程的锁.条件语句.以及wait().notify()/notifyAll组成. 下面来实现一个启用多个线程来循环的输出两个不同的语句. package com.app. ...
- java中使用ReentrantLock锁中的Condition实现三个线程之间通信,交替输出信息
本文直接附上源代码,如下是自己写的一个例子 面试题需求: 使用Condition来实现 三个线程 线程1 线程2 线程3 三个交替输出 [按照 线程1(main)-->线程2-->线程3] ...
- Android Service与Activity之间通信
主要分为: 通过Binder对象 通过broadcast(广播)的形式 Activity调用bindService (Intent service, ServiceConnection conn, i ...
随机推荐
- 「 从0到1学习微服务SpringCloud 」08 构建消息驱动微服务的框架 Spring Cloud Stream
系列文章(更新ing): 「 从0到1学习微服务SpringCloud 」01 一起来学呀! 「 从0到1学习微服务SpringCloud 」02 Eureka服务注册与发现 「 从0到1学习微服务S ...
- ubuntu文件操作mkdir cp mv rm ln
pwd:显示当前目录 date:显示当前日期 cal:显示日历 ls:列出目录内容 cd:改变当前工作目录 ‘.’:代表工作目录 ‘..’:代表工作目录父目录 进入当前目录的父目录:cd /home ...
- Selenium(七):截图显示等待
一.显示等待(有条件等待) 常见问题: 定位明明是对的,为什么运行代码没找到定位. 定位明明是对的,找到定位了,文本信息为什么取到是空的? 分析原因: 没有处理frame 页面渲染速度比自动化测试的代 ...
- JQuery--使用JQuery 的$.ajax 方法进行异步请求,导致页面闪烁
情景 目前有个需求是在文本框填入内容,自动触发keyup事件,下拉列表会自动过滤相应的选项,但是使用了$,ajax后发现,每次触发事件时,都导致整个网页闪烁,触发了全局ajax事件 代码片段 $.aj ...
- Android Studio中Gradle sync failed
问题:Android Studio中更新同步Gradle 失败 Gradle sync failed: Could not find com.android.tools.build:gradle:3. ...
- 微信小程序 npm 找不到npm包 没有找到可以构建的npm包 如何使用第三方npm组件
微信官方的npm文档 太模糊了,而且感觉把最重要的东西写在了最后面,我这里费了老大功夫才知道这个坑. 初次使用,首先要初始化 npm 初始化——> 找到 pages 这个文件夹,然后进入这个文件 ...
- ros中坐标系管理系统
首先安装小海龟实例的功能包ros-melodic-turtle-tf qqtsj ~ sudo apt install ros-melodic-turtle-tf [sudo] qqtsj ...
- ros之自定义服务数据
如何自定义服务数据 string name Uint8 age Uint8 sex Uint8 unknown =0 Uint8 male =1 Uint8 female = 2 (上面的是Reque ...
- 11、ACL
IP访问控制列表 标准ACL 1)检查源地址 2)不能对协议簇作限定 扩展ACL 1)检查源和目标地址 2)能容许或拒绝特定的协议和应用(端口号) 区别列表类型: 1)ACL号 : 1-99,1300 ...
- python day02练习和作业
# 1.请用代码实现:利用下划线将列表的每一个元素拼接成字符串,li=[‘alex’, ‘eric’, ‘rain’]# li=['alex','eric','rain']# print('_'.jo ...