Android之在一个类里面注册Handler发送消息在另外一个类里面接收消息
来源:互联网 发布:单片机一帧是什么意思 编辑:程序博客网 时间:2024/06/06 00:03
1、问题
我们要在一个类里面变量或者函数变化需要改变另外一个类里面的东西,这个时候java里面除了接口回调之外,我们还可以用注册Handler来实现
2、代码实现
1、MainActivity.java文件
package com.example.handlercallback;import android.app.Activity;import android.os.Bundle;public class MainActivity extends Activity {public Control mControl;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mControl = new Control();new Thread(new Runnable(){@Overridepublic void run() {Manager.getInstance().sendSuccessMessage();try {Thread.sleep(2000);Manager.getInstance().sendFailMessage();} catch (InterruptedException e) {}}}).start();}}
2、Control.java文件
package com.example.handlercallback;import android.os.Handler;import android.os.Message;import android.util.Log;public class Control {public static final String TAG = "Control";public static final int OK = 0;public static final int fail = -1;private Handler svpnSericeHandler = new Handler() {public void handleMessage(Message msg) {switch (msg.what) {case Control.OK:Log.d(TAG, "msg.what = " + msg.what);return;case Control.fail:Log.d(TAG, "msg.what = " + msg.what);return;default:Log.d(TAG, "msg.what = " + msg.what);break;}}};public Control() {Manager.getInstance().setHandler(svpnSericeHandler);}}
3、Manager.java文件
package com.example.handlercallback;import android.os.Handler;public class Manager {public static final String TAG = "Manager";private static Manager mInstance;public Handler mHandler;public synchronized static Manager getInstance() {if (mInstance == null) {mInstance = new Manager();}return mInstance;}public void setHandler(Handler handler) {this.mHandler = handler;}public void sendSuccessMessage() {mHandler.sendEmptyMessage(Control.OK);}public void sendFailMessage() {mHandler.sendEmptyMessage(Control.fail);}}
3、结果展示
Control D msg.what = 0 Timeline I Timeline: Activity_idle id: android.os.BinderProxy@38af7543 time:79529768 Control D msg.what = -1
日志打印出来了
阅读全文
0 0
- Android之在一个类里面注册Handler发送消息在另外一个类里面接收消息
- My eclisps里面,想运行一个类,却总是在运行另外一个包的类?
- 在类里面声名一个私有方法
- 怎样在vs2010里面实现两个编辑控件对应一个消息处理函数
- 怎样在vs2010里面实现两个编辑控件对应一个消息处理函数
- 将一个div 里的内容显示在另外的一个div里面
- 如果在一个KeyFigure的Rule里面,使用另外一个KeyFigure的数据,如何实现?
- MFC从一个对话框向另外一个对话框发送消息
- typedef 在类里面定义一个类型时的问题。
- 在一个类里面 成员函数之间的互相调用
- 在SQL Server 2005里面把表移动到另外一个filegroup里(ZT,经翻译)
- 在IE8里面,弹出网页常常打开的是另外一个标签,怎么办?
- 在SQL Server 2005里面把表移动到另外一个filegroup里(ZT,经翻译)
- Android之发送接收服务器消息
- Android Handler Message 在使用多个Handler时,接收不到消息的处理办法
- Android学习—— Handler 的消息发送,在新的线程处理消息
- Android执行另外一个包里面的某个…
- C/C++语言之通过定义指针函数方式来实现在一个cpp文件里面获取另外一个cpp文件函数的返回值
- CSS3伪元素表单控件默认样式重置与自定义大全
- C++设计模式之工厂方法模式
- padding学习
- 持续集成概念是什么?好处有哪些?
- Java面试04|Spring框架
- Android之在一个类里面注册Handler发送消息在另外一个类里面接收消息
- 为什么精英都是清单控(笔记)——清单都一样吗?
- 数组、字符串与指针
- Tmux使用初体验
- POJ 3692 Kindergarten(最大匹配+匈牙利算法+补图思想)
- Form-实验吧
- 内核源码阅读(一)进程
- Android学习(一)RelativeLayout布局属性
- js中浮点型运算