以下是EventBus在Android应用中的使用示例。这个示例演示了如何定义一个事件类、注册订阅者、发布事件以及取消订阅。
首先,在项目的build.gradle
文件中添加EventBus的依赖:
dependencies {
implementation 'org.greenrobot:eventbus:3.2.0'
}
接下来,定义事件类:
// MyEvent.java
public class MyEvent {
public final String message;
public MyEvent(String message) {
this.message = message;
}
}
然后,在需要接收事件的组件中注册订阅者,并定义事件处理方法:
// MySubscriberActivity.java
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
public class MySubscriberActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_subscriber);
// 注册订阅者
EventBus.getDefault().register(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
// 取消订阅
EventBus.getDefault().unregister(this);
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onEvent(MyEvent event) {
// 处理事件
System.out.println(event.message);
}
}
在发布事件的组件中,使用EventBus发布事件:
// MyPublisher.java
import org.greenrobot.eventbus.EventBus;
public class MyPublisher {
public void publishEvent(String message) {
// 创建并发布事件
MyEvent event = new MyEvent(message);
EventBus.getDefault().post(event);
}
}
确保在使用EventBus.getDefault().post(event)
的地方,事件MyEvent
已经被创建,并且你想要传递的数据已经设置好。
在上面的代码中,MySubscriberActivity
类在onCreate
方法中注册了自身作为EventBus的订阅者,并在onDestroy
方法中取消了订阅。onEvent
方法被标记为@Subscribe
,并指定了threadMode
为ThreadMode.MAIN
,意味着当事件被发布时,onEvent
方法将在主线程中被调用。
MyPublisher
类有一个publishEvent
方法,它创建了一个MyEvent
对象,并使用EventBus.getDefault().post(event)
将其发布。
最后,请确保你的订阅者类(如MySubscriberActivity
)的生命周期与EventBus的注册和取消注册操作相匹配,以避免内存泄漏。
注意:在实际应用中,你可能需要根据具体的业务逻辑调整事件类、订阅者类和发布者类的实现。