Android EventBus(普通事件/粘性事件)详解
作者:飞鸟96 发布时间:2022-12-22 18:48:09
标签: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


猜你喜欢
- 本文实例讲述了WPF中的ListBox实现按块显示元素的方法。分享给大家供大家参考,具体如下:注意:需要设置ListBox的属性 Scrol
- 把SpringBoot项目打包成Docker镜像有两种方案:全自动化:先打好docker镜像仓库,然后在项目的maven配置中配置好仓库的地
- 哈喽大家好啊,我是Hydra。Spring作为项目中不可缺少的底层框架,提供的最基础的功能就是bean的管理了。bean的注入相信大家都比较
- 一、正则表达式去除代码行号作为开发人员,我们经常从网上复制一些代码,有些时候复制的代码前面是带有行号,如:MyEclipse本身自带有查找替
- weibo.java @Override &n
- 前言公众号上有网友询问我如何生成 EMF 文件的问题:本以为非常简单,我快速给出了解决方案:var bitmap = new Bitmap(
- 一、题目描述题目实现:一个服务器与多个客户端通信。通过一个服务器与多个客户端进行通信,运行程序,服务器启动后,启动两个客户端程序,然后通过服
- 本文实例为大家分享了如何利用AOP实现SqlSugar自动事务,供大家参考,具体内容如下先看一下效果,带接口层的三层架构:BL层: publ
- 第一种方法:获取手机的IMSI码,并判断是中国移动\中国联通\中国电信TelephonyManager telManager = (Tele
- Command模式是最让我疑惑的一个模式,我在阅读了很多代码后,才感觉隐约掌握其大概原理,我认为理解设计模式最主要是掌握起原理构造,这样才对
- 由于大多数便携式设备支持浏览图片而不支持浏览PowerPoint 文件,所以相比较而言,图像对于用户而言更加友好。除此之外,将PowerPo
- 本文实例讲述了Java基于Tcp的基础聊天功能。分享给大家供大家参考,具体如下:最基础的聊天,用户端和服务器端每次说一句,而且严格规定了先后
- 前言写Android:如何编写“万能”的Activity的这篇文章到现在已经好久了,但是由于最近事情较多,写重构篇的计划就一直被无情的耽搁下
- 最近在公司,项目不是很忙了,偶尔看见一个兄台在CSDN求助,帮忙要一个自定义的渐变色进度条,我当时看了一下进度条,感觉挺漂亮的,就尝试的去自
- 下面讲解以下在使用listview时最常见的几个问题。1.如何改变item的背景色和按下颜色listview默认情况下,item的背景色是黑
- MyBatis使用RowBounds实现的分页是逻辑分页,也就是先把数据记录全部查询出来,然在再根据offset和limit截断
- 本文实例为大家分享了Retrofit2 RxJava2实现Android App自动更新,具体内容如下功能解析自动更新可以说已经是App的标
- 本文实例讲述了Android开发使用自定义View将圆角矩形绘制在Canvas上的方法。分享给大家供大家参考,具体如下:前几天,公司一个项目
- 前言:java5为我们提供了Callable和Future,使我们可以很容易的完成异步任务结果的获取,但是通过Future的get获取异步任
- 1、Dom4j概述dom4j is an easy to use, open source library for working with