大部分情况下,我们需要实现的消息机制无非是某个类得到了数据,需要传递到某个主界面上去显示,可以把这个消息在类中做成全局变量,主界面的类用一个线程定时扫描,如果这个数据不是空,则说明被类刷新了,那么更新主界面的数据,更新完成就把这个数据清空,这样下次判断如果为空,则不更新,直到被某个子类刷新位置再更新。

但是即便如此,还是没那么简单,比如我在主程序中,死循环不断输出一个int类型变量的值,使用了两个try catch语句,第一个不会死,在日志窗口中可以看到数据的增加,而第二个却不会执行,文本框不会定期的增加数据

 

我们需要用到JAVA的handler来做这个事情,首先是在主程序中,声明Handler类型变量,然后再Oncreate的时候做好这个函数要做的事情(可以指向一个新的函数,或者直接写,注意函数格式是死的,要求Message类型变量进来,但是实际上内部执行什么函数都是任意的,比如我要执行UpdataTalk,就是把一个string更新主界面)

 

到了实现消息机制的问题了,我们主程序一旦OnCreate就启动了一个线程 ,在线程中不断用本文最前面说的,判断一个全局的字符串是否是空或者null,如果不是就说明有了新的数据,执行更新。注意Thread t1的start其实就是执行了run方法,每隔100ms判断并刷新一次数据。可以尝试一下直接更新时不行的,必须交给handler来处理。

 

当然,更新完了要自己把数据清空,否则会不断提示同样的话

 

 

JAVA Eclipse中如何简易的实现消息机制的更多相关文章

  1. java eclipse中的代码联动提示功能

    eclipse中的代码联动提示设置:window--->preferences--->java--->editor----> content assist的auto activ ...

  2. [Java] Eclipse中复制全限定名(Copy Qualified Name)的效果

    在Eclipse中,使用“ Copy Qualified Name”复制类的全限定名有两种效果: (1)选中工程上的java文件,右键 - Copy Qualified Name 复制的效果是带斜杠的 ...

  3. Android(java)学习笔记202:Handler消息机制的原理和实现

     联合学习 Android 异步消息处理机制 让你深入理解 Looper.Handler.Message三者关系   1. 首先我们通过一个实例案例来引出一个异常: (1)布局文件activity_m ...

  4. Android(java)学习笔记145:Handler消息机制的原理和实现

     联合学习 Android 异步消息处理机制 让你深入理解 Looper.Handler.Message三者关系   1. 首先我们通过一个实例案例来引出一个异常: (1)布局文件activity_m ...

  5. JAVA Eclipse中的Android程序如何使用线程

    我们先单独定义一个java类,名字可以任意取(比如叫做ClientHeartBeat类,我当前在做一个socket通信的客户端,我们假定需要一个可以测试心跳的程序),注意他要继承Thread,然后重载 ...

  6. java,eclipse中如何添加httpclient.jar

    1.Download 'Binary' package of the latest official release from the project download page. There sho ...

  7. Eclipse中servlet简易模版

    package ${enclosing_package}; import java.io.IOException; import javax.servlet.ServletException; imp ...

  8. java eclipse中使用wsdl生成soap 的客户端代码

    项目右键--> new --> other finish完成

  9. [学习笔记]Java代码中各种类型变量的内存分配机制

    程序运行时,我们最好对数据保存到什么地方做到心中有数.特别要注意的是内存的分配.有六个地方都可以保存数据: (1) 寄存器 这是最快的保存区域,因为它位于和其他所有保存方式不同的地方:处理器内部.然而 ...

随机推荐

  1. linxu安装方式

    安装Linux操作系统的5种方法以及心得这几天没有调别的东西,想起自己还不太会在没有安装光盘的时候安装Linux,于是试了一下Linux的五种安装方法,下面是我的一些 篇一:安装Linux操作系统的5 ...

  2. roadhogrc.mock.js配置

    1.roadhogrc.mock.js const fs=require('fs'); const path=require('path'); const mockPath=path.join(__d ...

  3. C#的泛型委托Predicate/Func/Action

    Predicate<T> 是一个委托,它代表了一个方法,它的定义是: namespace System {    // 摘要:    表示定义一组条件并确定指定对象是否符合这些条件的方法. ...

  4. VS2013 MFC C++ CString ,const char , char, string 类型转换

    VS2013 测试 以下测试加入头文件: # include <string>#include <cstdlib>using namespace std; //-------- ...

  5. hbase异常:java.io.IOException: Unable to determine ZooKeeper ensemble

    项目中用到hbase,有时候可能会报一些异常,比如java.io.IOException: Unable to determine ZooKeeper ensemble 等等,当出现这个问题时,根据个 ...

  6. Fiddler抓包8-打断点(bpu)【转载】

    本篇转自博客:上海-悠悠 原文地址:http://www.cnblogs.com/yoyoketang/tag/fiddler/ 前言 先给大家讲一则小故事,在我们很小的时候是没有手机的,那时候跟女神 ...

  7. hdu 5145(莫队算法+逆元)

    NPY and girls Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tot ...

  8. typescript项目配置路径别名(路径映射)

    在vue项目中,我们可以利用“@”来指代src目录,在普通webpack项目中,我们也可以通过配置webpack的config来指定路径别名,但是在typescript+webpack项目中我们该怎么 ...

  9. (4)C#变量,常量,数据类型,转义字符,数据类型转换

    一.变量 程序运行期间能够被改变的量称为变量. 变量名称要用小写字母开头,避免用下划线开头. 如果包含多个单词,从第二个单词开始首字母都要大写. 定义并初始化 double pi = 3.14 二.常 ...

  10. 陕西师范大学第七届程序设计竞赛网络同步赛 F WWX的礼物【数学/k进制下x^n的位数/log】

    链接:https://www.nowcoder.com/acm/contest/121/F来源:牛客网 题目描述 WWX的女朋友送给了他一个礼物,可是礼物却被一把K进制密码锁锁住了.在礼物盒上还有一张 ...