首先定义一个类GlobalHandler,继承Handler,然后重写它的handleMessage()方法,然后我们在内部定义一个HandleMsgListener接口,接口中定义一个处理消息的抽象方法handleMsg(),当handler收到消息后,就会回调handleMessage()去处理消息,然后我们在这个方法去调用我们接口HandleMsgListener中的handleMsg()方法,在使用的时候,用户自己去处理这个消息,具体代码如下:
package com.lxz.custom;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
/**
* Created by Administrator on 2018/4/17 0017.
*/
public class GlobalHandler extends Handler{
private HandleMsgListener listener;
private String Tag = GlobalHandler.class.getSimpleName();
//使用单例模式创建GlobalHandler
private GlobalHandler(){
Log.e(Tag,"GlobalHandler创建");
}
private static class Holder{
private static final GlobalHandler HANDLER = new GlobalHandler();
}
public static GlobalHandler getInstance(){
return Holder.HANDLER;
}
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (getHandleMsgListener() != null){
getHandleMsgListener().handleMsg(msg);
}else {
Log.e(Tag,"请传入HandleMsgListener对象");
}
}
public interface HandleMsgListener{
void handleMsg(Message msg);
}
public void setHandleMsgListener(HandleMsgListener listener){
this.listener = listener;
}
public HandleMsgListener getHandleMsgListener(){
return listener;
}
}
package com.lxz.custom;
import android.app.Activity;
import android.content.Context;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity implements GlobalHandler.HandleMsgListener{
private GlobalHandler mHandler;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mHandler = GlobalHandler.getInstance();
mHandler.setHandleMsgListener(this);
mHandler.sendEmptyMessage(0);
mHandler.sendEmptyMessage(1);
}
@Override
public void handleMsg(Message msg) {
switch (msg.what){
case 0:
Toast.makeText(MainActivity.this,"test0",Toast.LENGTH_SHORT).show();
break;
case 1:
Toast.makeText(MainActivity.this,"test1",Toast.LENGTH_SHORT).show();
break;
}
}
@Override
protected void onDestroy() {
super.onDestroy();
//销毁移除所有消息,避免内存泄露
mHandler.removeCallbacks(null);
}
}
549



被折叠的 条评论
为什么被折叠?



