Android BroadcastReceiver和EventBus区别
2024-01-03 08:01:06
一、BroadcastReceiver
Android 面试题之 BroadcastReceiver 使用+实例
二、EventBus
EventBus 是一个非常有用的库,简化组件之间的通信。它允许组件在不直接相互耦合的情况下进行通信。
2.1 添加依赖项
????????在你的 build.gradle
文件中添加 EventBus 依赖项:
implementation("org.greenrobot:eventbus:3.3.1")
2.2 创建事件类
????????创建一个事件类,用于包含你想要在不同组件之间传递的信息。
public class MessageEvent {
private String message;
public MessageEvent(String message) {
this.message = message;
}
public String getMessage() {
return message;
}
}
2.3?发布事件
????????在你想要发送事件的地方发布事件。
EventBus.getDefault().post(new MessageEvent("EventBus-SCC!"));
2.4?注册和取消注册
????????在你的Activity或者Fragment中,注册和取消注册 EventBus。如果只是发送事件,不需要注册和取消。只有在接收事件的时候才需要注册。
@Override
public void onStart() {
super.onStart();
EventBus.getDefault().register(this);
}
@Override
public void onStop() {
EventBus.getDefault().unregister(this);
super.onStop();
}
2.5?接收事件
????????在接收事件的组件中创建一个订阅方法来处理事件。
@Subscribe(threadMode = ThreadMode.MAIN)
public void onMessageEvent(MessageEvent event) {
String message = event.getMessage();
// 处理收到的消息
}
????????确保订阅方法上有 @Subscribe
注解,并且你可以使用 threadMode
参数来指定事件处理在哪个线程中执行。
注意事项:
- 确保订阅者和发布者是在相同的 EventBus 实例中。
- 不要发布空事件,确保你的事件类是一个有效的 POJO(Plain Old Java Object)。
????????记住,EventBus 虽然是一种方便的通信方式,但过度使用可能导致代码的可读性和维护性下降。
三、BroadcastReceiver和EventBus区别
1.广播是四大组件之一,EventBus是开源框架;
2. 广播不能直接执行耗时操作,如果超过10秒,会导致 ANR;
3.广播非常消耗资源,而EventBus非常轻量;
4.EventBus切换线程非常方便,只需要修改下注解就行了;
5.广播可以跨进程,而EventBus不可以。
?
文章来源:https://blog.csdn.net/g984160547/article/details/135150079
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!