Eventbus使用教程

Eventbus使用教程

摘要
eventbus官方api文档
eventbus下载地址

eventbus官方api文档

1、Eventbus配置

2、Eventbus源码解析(#Eventbus源码解析)

3、Eventbus使用教程

Eventbus配置

在gradle文件的dependencies {}模块中添加依赖

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    implementation group: 'org.greenrobot', name: 'eventbus', version: '3.1.1'
}



Eventbus使用教程

1、自定义事件类(实质上是一个java bean类,用来定义传输的数据的类型)

public class MyEvent {
    String message;
    public MyEvent(String message) {
        this.message = message;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }
}

2、在subject具体实现类里注册、注销事件

以在activity中为例,当我们需要在Activity或者Fragment里订阅事件时,我们需要注册EventBus。我们一般选择在Activity的onCreate()方法里去注册EventBus,在onDestory()方法里,去解除注册。

注册事件

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button button = (Button)findViewById(R.id.testBtn);
        button.setOnClickListener(this);
        tv = (TextView)findViewById(R.id.txt);
        //注册observer
        EventBus.getDefault().register(this);
    }

注销事件

    @Override
    protected void onDestroy() {
        super.onDestroy();
        EventBus.getDefault().unregister(this);

3、发送事件

可放在任意需要的位置,此处以点击button后触发事件发送为例

    @Override
    public void onClick(View v) {
        EventBus.getDefault().post(new MyEvent("nice to meet you"));
    }

4、事件处理

用@Subscribe注解的方法即为事件处理者,处理消息的方法名无限制,但是需要指定线程模型。

线程模型

  • ThreadMode.MAIN Event handler methods are called in a separate thread.
  • ThreadMode.ASYNC
  • ThreadMode.BACKGROUND
  • ThreadMode.MAIN_ORDERED
  • ThreadMode.POSTING
    @Subscribe(threadMode = ThreadMode.MAIN)
    public void subscribeMyEvent(MyEvent event){
        tv.setText(event.getMessage());
    }

Eventbus源码解析

Eventbus使用了观察者模式
返回顶部点击跳转

猜你喜欢

转载自www.cnblogs.com/peter-dev/p/10686698.html