我的总结篇一:Android 跨类 (完全不相干的两个地方) 通信解决方案之 -- 回调的妙用

本文介绍了如何在Android中实现完全不相干的组件(如Activity与Service或静态广播到自定义View)之间的参数传递。通过定义接口、使用单例作为接口持有者以及注册和发送数据的机制,详细讲解了单对单、单对多的通信方式,并提供了代码示例。此外,还探讨了结合本地存储进行数据更新和主动刷新的可能性。
摘要由CSDN通过智能技术生成

这里先解释下,这里可以实现两个完全不相干的地方的参数传递,比如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 使用 拉姆达就会很舒服了 -- 


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值