Android跨组件通信——TheWatcher使用介绍

TheWatcher简介


主要针对Android各个界面中数据变化需要同步提供监听(Java项目通用)
用途类似EventBus,文章参照http://blog.csdn.net/harvic880925/article/details/40660137
只是TheWatcher仅仅提供了跨组件的数据改变监听回调,并没有EventBus所谓的:

“EventBus是一款针对Android优化的发布/订阅事件总线。主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,线程之间传递消息.优点是开销小,代码更优雅。以及将发送者和接收者解耦。”

用法简介


首先在需要实现回调方法的类中实现TheChangedListener接口,然后调用TheWatcher类的register方法进行注册

public class MainActivity extends Activity implements TheChangedListener {

    TextView tvHello;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        TheWatcher.register(this);
        tvHello = $(R.id.am_tv_hello);
        tvHello.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                startActivity(new Intent(MainActivity.this, TwoActivity.class));
            }
        });
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        TheWatcher.unregister(this);
    }

    public <T extends View> T $(int id) {
        return (T) super.findViewById(id);
    }

    public <T extends View> T $(View view, int id) {
        return (T) view.findViewById(id);
    }

    @Override
    public void onWatcherChanged() {
        tvHello.setText(TheWatcher.getString("test"));
    }
}

注意在onDestory的时候调用unregister进行注销
然后在需要通知值改变的地方调用TheWatcher.putXXXX();方法

    $(R.id.at_btn_notify).setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            TheWatcher.putString("test", "Welcome");
        }
    });

本来最开始是准备写得比较全能的,比如每个地方进行register的时候配置当前类只接收哪一些改变回调,但是后来想想实在没有必要,如果在register的地方进行配置,最终调用也会在最后的那个循环中来进行判断是否进行回调,现在这个样子回调所有的方法,也并不会对性能造成多大个影响,毕竟一个App中能够一起在前台进行操作的Activity、Service等基本上都不超过十个,需要回调数据保持一致的类就更少了。像EventBus那种想要替代Intent、Handle的我也没那个技术,也没有那个必要,明明有Intent和Handle了,手机本来就卡的话,你全部用C艹写它也会很卡。弱弱的说一句大神勿喷。

最重要的在最后,链接地址跟上,请点个小星星,么么哒。现在全部集成到AntiLib中了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值