EventBus详解及简单实例

EventBus:Github

 

 

使用优点:

1、简化了组件之间的通信

      将事件发送者和接收者分离

      在活动,片段和后台线程中良好

      避免复杂且容易出错的依赖关系和生命周期问题

2、使代码更简单

3、很快、很小,具有交付线程,用户优先级等高级功能。

Event使用有三步

(1) 定义事件

(2) 准备订阅者:声明并注释您的订阅方法,可选择指定线程模式。注册和注销您的订阅者。例如,在Android上,活动和片段通常应根据其生命周期进行注册

(3) 发送event。
 

 

EventBus案例
实现效果:引入EnentBus,使用EnentBus一个消息的发送和接收,在MainActivity上写一个按钮和一个TextView,点击MainActivity上的按钮,跳转到另一个Activity,在另一个Activity上也有一个按钮,点击这一个按钮将消息写在MainActivity的TextView上。

 

先导入依赖: implementation 'de.greenrobot:eventbus:3.0.0-beta1'

 

定义一个EventBus的消息类,写出 构造方法和get方法

public class EventMessage {
    private String message;
 
    public EventMessage(String message) {
        this.message = message;
    }
 
    public String getMessage() {
        return message;
    }
 
    public void setMessage(String message) {
        this.message = message;
    }
}

MainActivity:

public class MainActivity extends AppCompatActivity {
 
    @BindView(R.id.activitybutton)
    Button activitybutton;
    @BindView(R.id.textView)
    TextView textView;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);
        EventBus.getDefault().register(this);
    }
 
    @Override
    protected void onDestroy() {
        super.onDestroy();
        EventBus.getDefault().unregister(this);
    }
    
    //接收消息
    @Subscribe(threadMode = ThreadMode.MainThread)
    public void onEvent(EventMessage eventMessage){
        String message = eventMessage.getMessage();
        textView.setText(message);
    }
 
    //按钮监听
    @OnClick(R.id.activitybutton)
    public void onViewClicked() {
        Intent intent = new Intent(MainActivity.this,SecondActivity.class);
        startActivity(intent);
    }
}

SecondActivity:


public class SecondActivity extends AppCompatActivity {
 
    @BindView(R.id.secondActivity)
    Button secondActivity;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        ButterKnife.bind(this);
    }
 
    @OnClick(R.id.secondActivity)
    public void onViewClicked() {
        new Thread(
                new Runnable() {
                    @Override
                    public void run() {
                        //EventBus发送消息
                        EventBus.getDefault().post(new EventMessage("I want to send a message to MainActivity!我要向MainActivity发送消息"));
                    }
                }
        ).start();
    }
}


 

效果展示:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值