Android EventBus(普通事件/粘性事件)详解

作者:飞鸟96 时间:2022-12-22 18:48:09 

本文实例为大家分享了Android EventBus普通事件和粘性事件,供大家参考,具体内容如下

展示效果

Android EventBus(普通事件/粘性事件)详解
Android EventBus(普通事件/粘性事件)详解

添加EventBus导入依赖


compile 'org.greenrobot:eventbus:3.0.0'

主MainActivity方法


public class MainActivity extends AppCompatActivity {
 private Button button_t,button_d;
 private TextView tv_a;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.activity_main);
   button_d=(Button)findViewById(R.id.button_d);
   button_d.setText("订阅");
   button_t=(Button)findViewById(R.id.button_t);
   button_t.setText("跳转到Bctivity");
   tv_a=(TextView)findViewById(R.id.tv_a);
   tv_a.setText("欢迎大家观看飞鸟96的博客");
   button_t.setOnClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View view) {
       startActivity(new Intent(MainActivity.this,MainBctivity.class));
     }
   });
   /*
   * 订阅事件
   * */
   button_d.setOnClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View view) {
       if(!EventBus.getDefault().isRegistered(MainActivity.this)) {
         EventBus.getDefault().register(MainActivity.this);
       }else{
         Toast.makeText(MainActivity.this, "请勿重复注册事件", Toast.LENGTH_SHORT).show();
       }
     }
   });
 }

@Override
 protected void onDestroy() {
   super.onDestroy();
   /*
   * 取消注册事件
   * */
   EventBus.getDefault().unregister(MainActivity.this);
 }
 @Subscribe(threadMode = ThreadMode.MAIN)
 public void onMoonEvent(MessageEvent message){
   tv_a.setText(message.getMessage());
 }
 @Subscribe(sticky = true)
 public void onMoonEvents(MessageEvent message){
   tv_a.setText(message.getMessage());
 }
}

主MainBctivity方法


public class MainBctivity extends AppCompatActivity {
 private Button button_f,button_n;
 private TextView tv_b;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.activity_main_bctivity);
   button_f=(Button)findViewById(R.id.button_f);
   button_f.setText("发送事件");
   button_n=(Button)findViewById(R.id.button_n);
   button_n.setText("粘性事件");
   tv_b=(TextView)findViewById(R.id.tv_b);
   tv_b.setText("MainBctivity");
   /*发送事件*/
   button_f.setOnClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View view) {
       EventBus.getDefault().post(new MessageEvent("飞鸟96博客祝你用的开心!"));
       finish();
     }
   });
   /*粘性事件*/
   button_n.setOnClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View view) {
       EventBus.getDefault().postSticky(new MessageEvent("开心开心开开心!!"));
       finish();
     }
   });

}
}

MessageEvent(事件类)


public class MessageEvent {
 private String message;

public MessageEvent(String message) {
   this.message = message;
 }

public MessageEvent() {
 }

public String getMessage() {
   return message;
 }

public void setMessage(String message) {
   this.message = message;
 }
}

activity_main(MainActivity的布局)


<TextView
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:text="Hello World!"
   android:layout_centerInParent="true"
   android:id="@+id/tv_a" />

<Button
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:layout_marginTop="17dp"
   android:id="@+id/button_t"
   android:layout_below="@id/tv_a" />
 <Button
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:layout_marginTop="17dp"
   android:id="@+id/button_d"
   android:layout_below="@id/button_t" />

activity_main_bctivity(MainBctivity的布局)


<TextView
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:text="Hello World!"
   android:layout_centerInParent="true"
   android:id="@+id/tv_b" />

<Button
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:layout_marginTop="17dp"
   android:id="@+id/button_f"
   android:layout_below="@id/tv_b" />
 <Button
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:layout_marginTop="17dp"
   android:id="@+id/button_n"
   android:layout_below="@id/button_f" />

来源:http://blog.csdn.net/qq_39493777/article/details/78467433

标签:Android,EventBus
0
投稿

猜你喜欢

  • 简单理解Java的垃圾回收机制与finalize方法的作用

    2023-02-04 01:49:37
  • c#之滚动字幕动画窗体的实现详解

    2022-02-14 08:46:19
  • 深入分析JAVA 建造者模式

    2023-03-14 01:32:27
  • Maven属性与版本管理详细步骤分解

    2023-11-15 14:38:45
  • Java 获取网站图片的示例代码

    2022-03-11 14:52:44
  • C#中数组、ArrayList、List、Dictionary的用法与区别浅析(存取数据)

    2021-05-27 03:55:49
  • Matlab实现贪吃蛇小游戏的示例代码

    2023-07-14 14:13:00
  • java反射使用示例分享

    2023-07-02 20:18:59
  • 完美解决idea创建文件时,文件不分级展示的情况

    2022-01-01 22:10:19
  • Android实现文件下载进度显示功能

    2023-12-26 00:42:28
  • Android实现多级树形菜单并支持多选功能

    2023-08-29 20:01:04
  • 源码浅析Android中内存泄漏检测工具Leakcanary的使用

    2021-11-02 12:30:11
  • SpringBoot使用jasypt加解密密码的实现方法(二)

    2021-10-15 14:16:46
  • 仿orm自动生成分页SQL分享

    2022-11-09 22:48:30
  • Java Swing JProgressBar进度条的实现示例

    2023-07-15 17:48:47
  • java控制台打印本月的日历

    2023-10-15 22:58:12
  • android使用OkHttp实现下载的进度监听和断点续传

    2022-03-23 12:37:07
  • MyBatis动态SQL标签的用法详解

    2021-07-24 10:38:56
  • 详解android是如何管理内存的

    2022-02-08 03:37:22
  • Java 实现拦截器Interceptor的拦截功能方式

    2023-04-25 04:35:15
  • asp之家 软件编程 m.aspxhome.com