Android EventBus(普通事件/粘性事件)详解
作者:飞鸟96 时间:2022-12-22 18:48:09
本文实例为大家分享了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
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
简单理解Java的垃圾回收机制与finalize方法的作用
2023-02-04 01:49:37
![](https://img.aspxhome.com/file/2023/6/128236_0s.jpg)
c#之滚动字幕动画窗体的实现详解
2022-02-14 08:46:19
深入分析JAVA 建造者模式
2023-03-14 01:32:27
![](https://img.aspxhome.com/file/2023/8/66708_0s.jpg)
Maven属性与版本管理详细步骤分解
2023-11-15 14:38:45
![](https://img.aspxhome.com/file/2023/1/59531_0s.png)
Java 获取网站图片的示例代码
2022-03-11 14:52:44
![](https://img.aspxhome.com/file/2023/9/67969_0s.jpg)
C#中数组、ArrayList、List、Dictionary的用法与区别浅析(存取数据)
2021-05-27 03:55:49
![](https://img.aspxhome.com/file/2023/0/104340_0s.png)
Matlab实现贪吃蛇小游戏的示例代码
2023-07-14 14:13:00
![](https://img.aspxhome.com/file/2023/4/124054_0s.gif)
java反射使用示例分享
2023-07-02 20:18:59
完美解决idea创建文件时,文件不分级展示的情况
2022-01-01 22:10:19
![](https://img.aspxhome.com/file/2023/9/62099_0s.jpg)
Android实现文件下载进度显示功能
2023-12-26 00:42:28
![](https://img.aspxhome.com/file/2023/4/130404_0s.png)
Android实现多级树形菜单并支持多选功能
2023-08-29 20:01:04
![](https://img.aspxhome.com/file/2023/7/103907_0s.jpg)
源码浅析Android中内存泄漏检测工具Leakcanary的使用
2021-11-02 12:30:11
![](https://img.aspxhome.com/file/2023/8/88658_0s.png)
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
![](https://img.aspxhome.com/file/2023/3/80893_0s.gif)
java控制台打印本月的日历
2023-10-15 22:58:12
![](https://img.aspxhome.com/file/2023/1/58621_0s.jpg)
android使用OkHttp实现下载的进度监听和断点续传
2022-03-23 12:37:07
![](https://img.aspxhome.com/file/2023/9/98639_0s.gif)
MyBatis动态SQL标签的用法详解
2021-07-24 10:38:56
详解android是如何管理内存的
2022-02-08 03:37:22
![](https://img.aspxhome.com/file/2023/8/87308_0s.png)
Java 实现拦截器Interceptor的拦截功能方式
2023-04-25 04:35:15
![](https://img.aspxhome.com/file/2023/0/67130_0s.png)