2018-07-31EventBus简单使用

2018-07-31  本文已影响0人  猫KK

EventBus 是Android 两个组件间通信的框架

简单使用

建立依赖,可以去github上找最新版本,我这里是用3.3.1版本

compile 'org.greenrobot:eventbus:3.1.1'

新建一个消息类,用来存放需要发送的消息数据

//名字可以随便取
public class TestEventBean {
    private String message;

    public String getMessage() {
        return message;
    }

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

在需要接受消息的类中注册和解注册,我这是在Activity 中,所以在onCreate和onDestroy中

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //注册
        EventBus.getDefault().register(this);
    }

@Override
    protected void onDestroy() {
        super.onDestroy();
        //解注册
        EventBus.getDefault().unregister(this);
    }

在改类中新建一个方法,用来接受消息的回调

    /**
    *方法的名字可以随便起,注意要加上Subscribe 注解
    *方法的参数传前面新建的消息类
    */
    @Subscribe()
    public void received(TestEventBean testEventBean) {
        //接受到消息后回调方法,获取发送消息内容
        Log.e("TAG", "received: ------->" + testEventBean.getMessage());
    }

在需要发送的消息的类中,我这里是在第二个Activity 中点击发送消息

public class SecondActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        Button button = findViewById(R.id.bt_send);

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                TestEventBean testEventBean = new TestEventBean();
                testEventBean.setMessage("测试组件通信");
                //在需要发送消息的地方掉用该方法
                EventBus.getDefault().post(testEventBean);
            }
        });
    }
}

最后在有注解的方法中就能获取到发送的内容

结语

谢谢大家阅读,如有不足请指出,方便我改进

上一篇 下一篇

猜你喜欢

热点阅读