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
原创粉丝点击