Android EventBus 的使用

鲁杜吟
2023-12-01

1、引入依赖

implementation 'org.greenrobot:eventbus:3.1.1'

2、定义一个事件的封装对象(登录成功发出通知)

public class LoginEvent {

    //消息类型可以传递多种数据
    public final String message;

    public static LoginEvent getInstance(String message) {
        return new LoginEvent(message);
    }

    private LoginEvent(String message) {
        this.message = message;
    }

    public String getMessage() {
        return message;
    }
}

3、接受消息界面

(1)注册EventBus

EventBus.getDefault().register(this);

(2)接受并处理消息

@Subscribe(threadMode = ThreadMode.MAIN)
public void onMessageEvent(LoginEvent event) {
    String message = event.getMessage();
    Toast.makeText(this, message, Toast.LENGTH_LONG).show();
}

(3)注销EventBus

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

完整代码:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        EventBus.getDefault().register(this);//注册EventBus
    }

    //接收消息
    @Subscribe(threadMode = ThreadMode.MAIN)
    public void onMessageEvent(LoginEvent event) {
        String message = event.getMessage();
        Toast.makeText(this, message, Toast.LENGTH_LONG).show();
    }

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

4、发送消息

EventBus.getDefault().post(LoginEvent.getInstance("登录成功"));

 类似资料: