这里先解释下,这里可以实现两个完全不相干的地方的参数传递,比如activity和service或者,一个静态广播中接受到的数据传递到一个完全没有关系的自定义view中等等。
实现方式即:
1:使用单例作为中转作为接口持有者
2:接收参数的地方进行注册
3:数据来源的地方进行发送
那我们先进入正题撒
我们先定义一个接口
public interface JZOneStatusCallBack<T> {
void result(T result);
}
然后呢做一个单例,去持有这个接口的对象,添加get set方法 呐呐这个就很简单了。。
public class MyListenerUtil {
private static MyListenerUtil myListenerUtil = new MyListenerUtil();
private MyListenerUtil() {
}
public static MyListenerUtil getInstance() {
return myListenerUtil;
}
/* 持有接口对象 */
JZOneStatusCallBack jzOneStatusCallBack;
public JZOneStatusCallBack getJzOneStatusCallBack() {
return jzOneStatusCallBack;
}
public void setJzOneStatusCallBack(JZOneStatusCallBack jzOneStatusCallBack) {
this.jzOneStatusCallBack = jzOneStatusCallBack;
}
}
然后我们在需要接受数据的地方去进行注册
(下面代码中的泛型为我们之前定义的接口中声明传递参数的类型..):
MyListenerUtil.getInstance().setJzOneStatusCallBack(new JZOneStatusCallBack<String>() {
@Override
public void result(String result) {
}
});
如果添加了java 1.8 使用 拉姆达就会很舒服了 --