EventBus详解及简单实例
EventBus引入
EventBus:Github
Event bus for Android and Java that simplifies communication between Activities, Fragments, Threads, Services, etc. Less code, better quality.
翻译:适用于Android和Java的事件总线,简化了活动,碎片,线程,服务等之间的通信。减少代码,提高质量。
EventBus是Android和Java的发布/订阅事件总线。
使用优点:
1、简化了组件之间的通信
将事件发送者和接收者分离
在活动,片段和后台线程中良好
避免复杂且容易出错的依赖关系和生命周期问题
2、使代码更简单
3、很快、很小,具有交付线程,用户优先级等高级功能。
Event使用有三步
(1) 定义事件
(2) 准备订阅者:声明并注释您的订阅方法,可选择指定线程模式。注册和注销您的订阅者。例如,在Android上,活动和片段通常应根据其生命周期进行注册
(3) 发送event。
EventBus案例
实现效果:引入EnentBus,使用EnentBus一个消息的发送和接收,在MainActivity上写一个按钮和一个TextView,点击MainActivity上的按钮,跳转到另一个Activity,在另一个Activity上也有一个按钮,点击这一个按钮将消息写在MainActivity的TextView上。
先导入依赖: implementation 'de.greenrobot:eventbus:3.0.0-beta1'
定义一个EventBus的消息类,写出 构造方法和get方法
-
public class EventMessage {
-
private String message;
-
-
public EventMessage(String message) {
-
this.message = message;
-
}
-
-
public String getMessage() {
-
return message;
-
}
-
-
public void setMessage(String message) {
-
this.message = message;
-
}
-
}
MainActivity:
-
public class MainActivity extends AppCompatActivity {
-
-
@BindView(R.id.activitybutton)
-
Button activitybutton;
-
@BindView(R.id.textView)
-
TextView textView;
-
-
@Override
-
protected void onCreate(Bundle savedInstanceState) {
-
super.onCreate(savedInstanceState);
-
setContentView(R.layout.activity_main);
-
ButterKnife.bind(this);
-
EventBus.getDefault().register(this);
-
}
-
-
@Override
-
protected void onDestroy() {
-
super.onDestroy();
-
EventBus.getDefault().unregister(this);
-
}
-
-
//接收消息
-
@Subscribe(threadMode = ThreadMode.MainThread)
-
public void onEvent(EventMessage eventMessage){
-
String message = eventMessage.getMessage();
-
textView.setText(message);
-
}
-
-
//按钮监听
-
@OnClick(R.id.activitybutton)
-
public void onViewClicked() {
-
Intent intent = new Intent(MainActivity.this,SecondActivity.class);
-
startActivity(intent);
-
}
-
}
SecondActivity:
-
public class SecondActivity extends AppCompatActivity {
-
-
@BindView(R.id.secondActivity)
-
Button secondActivity;
-
-
@Override
-
protected void onCreate(Bundle savedInstanceState) {
-
super.onCreate(savedInstanceState);
-
setContentView(R.layout.activity_second);
-
ButterKnife.bind(this);
-
}
-
-
@OnClick(R.id.secondActivity)
-
public void onViewClicked() {
-
new Thread(
-
new Runnable() {
-
@Override
-
public void run() {
-
//EventBus发送消息
-
EventBus.getDefault().post(new EventMessage("I want to send a message to MainActivity!我要向MainActivity发送消息"));
-
}
-
}
-
).start();
-
}
-
}
效果展示:
文章来源: myhub.blog.csdn.net,作者:第三女神程忆难,版权归原作者所有,如需转载,请联系作者。
原文链接:myhub.blog.csdn.net/article/details/84203028
- 点赞
- 收藏
- 关注作者
评论(0)