eventbus使用_Android EventBus框架的使用介绍

EventBus 是Android和Java数据通信的一个简捷框架,在Android中,主要用于线程直接的通信以及Activity,Fragment等之间的数据交互等
官方介绍
- 简化组件之间的通信,解耦事件发送方和接收方,可以很好地处理Activity、Fragment和后台线程直接的数据交互,避免复杂且容易出错的依赖项和生命周期问题
- 使您的代码更简单
- 更快捷
- 小(60k 的jar包)
- 被安装在十亿以上的应用程序实践证明
- 具有发送线程、用户优先级等高级功能

EventBus 的使用

效果图
1.引入EventBus
implementation 'org.greenrobot:eventbus:3.2.0'2.定义一个消息类,例如MessageEvent
public class MessageEvent { private String message; public MessageEvent(String message) { this.message = message; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; }}3.全部代码列表
public class MainActivity extends AppCompatActivity { TextView mTvText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mTvText = findViewById(R.id.tv_text); EventBus.getDefault().register(this); } public void onClick(View view) { Intent intent = new Intent(this, Page1Activity.class); startActivity(intent); } @Subscribe public void onMessageEvent(MessageEvent messageEvent) { mTvText.setText(messageEvent.getMessage()); }}//activity_main.xml 布局文件public class Page1Activity extends AppCompatActivity { TextView mTvMessage; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_page1); mTvMessage = findViewById(R.id.tv_message); } public void onMessageClick(View view) { String message = "我是一个消息"; mTvMessage.setText(message); MessageEvent messageEvent = new MessageEvent(message); EventBus.getDefault().post(messageEvent); }}//activity_page1.xml 布局文件PS :要注意register和unregister 方法的调用的时机,要配合Activity的生命周期或者Fragment的生命周期。不然会出现Post了消息,但无法收到消息的情况喔!!!
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
