【Android】EventBus 之 发布事件(上)

【爱迪的懂】 本篇博客是关于EventBus 的基本使用步骤,一起来学习吧!

 

一. 整体流程

1. 添加 EventBus依赖 :
  implementation 'org.greenrobot:eventbus:3.1.1'
2. 注册:
  EventBus.getDefault().register(this);

3. 解注册:
  EventBus.getDefault().unregister(MainActivity.this);

4. 构造消息发送类

5. 发布消息
  EventBus.getDefault().post(new MessageInfo("消息类参数"));

6. 接收消息(共四种线程模型)
  ThreadMode.MAIN 表示此方法在主线程中执行
ThreadMode.BACKGROUND 表示此方法在后台执行,不能并发处理
  ThreadMode.ASYNC 表示此方法在后台执行,可异步并发处理
  ThreadMode.POSTING 表示该方法和消息发送方法在同一个线程中执行

二. 效果

  点击图一界面(MainActivity)按钮,跳转到图二界面

    再点击图二界面(SecondActivity)按钮发布消息,同时销毁图二界面,返回到图一界面,显示接收到的消息。

  

 

三. 步骤

添加依赖

  implementation 'org.greenrobot:eventbus:3.1.1'

 

 1. MainActivity

 1 public class MainActivity extends AppCompatActivity {
 2     private Button button_1;
 3     private TextView text_1;
 4 
 5     @Override
 6     protected void onCreate(Bundle savedInstanceState) {
 7         super.onCreate(savedInstanceState);
 8         setContentView(R.layout.activity_main);
 9 
10         init();
11         initData();
12     }
13 
14     //初始化控件
15     private void init() {
16         button_1 = findViewById(R.id.button_1);
17         text_1 = findViewById(R.id.text_1);
18     }
19 
21     private void initData() {
22         //2.注册 EventBus,将当前Activity绑定为订阅者
23         EventBus.getDefault().register(MainActivity.this);
24 
25         //添加点击监听,点击跳转到 SecondActivity界面
26         button_1.setOnClickListener(new View.OnClickListener() {
27             @Override
28             public void onClick(View v) {
29                 Intent intent = new Intent(MainActivity.this,SecondActivity.class);
30                 startActivity(intent);
31             }
32         });
33     }
34 
35     //3. 解除注册,解绑
36     @Override
37     protected void onDestroy() {
38         super.onDestroy();
39         EventBus.getDefault().unregister(MainActivity.this);
40     }
41 
42 
43     //6.回调方法,接收消息,前提加注解
44     @Subscribe(threadMode = ThreadMode.MAIN)
45     public void onMessageMode(MessageInfo event){
46         text_1.setText(event.getFanName() + "刷到了" + event.getMessage() + "的动态。");48     }
49 }

 

2.SecondActivity

 1 public class SecondActivity extends AppCompatActivity {
 2     private Button button_2;
 3     private TextView text_2;
 4 
 5     @Override
 6     protected void onCreate(Bundle savedInstanceState) {
 7         super.onCreate(savedInstanceState);
 8         setContentView(R.layout.activity_second);
 9 
10         init();
11         initDate();
12     }
13 
14     private void init() {
15         button_2 = findViewById(R.id.button_2);
16         text_2 = findViewById(R.id.text_2);
17     }
18 
19     private void initDate() {
20         button_2.setOnClickListener(new View.OnClickListener() {
21             @Override
22             public void onClick(View v) {
23                 
24                 //5. 发布消息
25                 EventBus.getDefault().post(new MessageInfo("a","吃饭了"));
26                 
27                 //销毁活动
28                 finish();
29             }
30         });
31     }
32 }

 

 3. 我构造的消息发送类

 1 public class MessageInfo {
 2     private String fanName;//名字
 3     private String message;//信息
 4 
 5     public MessageInfo(String fanName, String message) {
 6         this.fanName = fanName;
 7         this.message = message;
 8     }
 9 
10     public String getFanName() {
11         return fanName;
12     }
13 
14     public void setFanName(String fanName) {
15         this.fanName = fanName;
16     }
17 
18     public String getMessage() {
19         return message;
20     }
21 
22     public void setMessage(String message) {
23         this.message = message;
24     }
25 }

 

参考博客:https://www.jianshu.com/p/e7d5c7bda783

 

posted @ 2020-04-23 16:10  爱迪的懂  阅读(416)  评论(0编辑  收藏  举报