Android_EventBus使用

Demo演示


先看Demo,其中zhang就是第二个Activity在Finsh()时候返回给第一个Activity的字符串。
当然这只是其中最简单的用法,本身Android平台就有很多种几个Activity之间传值的,
但是很多情况比如某个控件状态更新或者请求有了数据之后,别的组件需要得到通知,
传统的方法有观察者模式或者接口回调均可以实现,这次我们用EventBus来实现比较方便简单。

代码
两个Activiy的界面就不用写了,都很简单,第一个就是一个TextVIew和一个Button
第二个Activity放置了一个Button。

思路是我们要在某个界面接受到通知的内容,那么我就注册在某个界面,那么对于Demo来讲
自然就是Activiy1了,


public class MainActivity extends AppCompatActivity {

    @Bind(R.id.textView)   //用的Butterknife的注解省略findviewbyid方法
    TextView textView;
    @Bind(R.id.button)
    Button button;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);
        EventBus.getDefault().register(this);  //再该界面接受通知
    }
    //下面的注解一定要加,否则无法添加观察者,FirstEvent为我们自己定义的事件类型
    @Subscribe
    public void onEventMainThread(FirstEvent f){  
        textView.setText(f.getMsg());

    }
    @OnClick(R.id.button)
    public void onClick() {
        startActivity(new Intent(this,Main2Activity.class));
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        EventBus.getDefault().unregister(this);  //界面销毁时候一定要解除注册否则内存泄漏
    }
}

接受通知的界面我们定义好了,那么谁来发送通知呢?
对于我们Demo来讲,就是Activiy2了

public class Main2Activity extends AppCompatActivity {

    @Bind(R.id.button2)
    Button button2;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        ButterKnife.bind(this);
    }

    @OnClick(R.id.button2)
    public void onClick() {
        //Post我们可以抽象为当该界面的某个组件发生变化时候,通知其他组件
        EventBus.getDefault().post(new FirstEvent("zhang"));
        finish();
    }
}

ok,大家先可以尝试下,至于其他的用法我们再慢慢研究,先让Demo跑起来
下载 代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值