EventBus3.0 简单实用分为简单的五个步骤。
-
选择EventBus的版本。
-
创建Event的POJO实体类。
-
在Activity或者Fragment中启动时注册EventBus,停止时取消EventBus。
-
在Activity或者Fragment准备消费2中定义的Event实体类的方法。
-
发送Event.
选择EventBus的版本。
创建Event的POJO实体类。
在Activity或者Fragment中启动时注册EventBus,停止时取消EventBus。
在Activity或者Fragment准备消费2中定义的Event实体类的方法。
发送Event.
那我们就看下面的详细步骤:
1,你的开发环境用的Android Studio(如果您用的是Eclipse,只需要下载EventBus相应的jar放到项目的libs下面就可以了)。
在Android Studio的Android项目app中的build.gradle添加EventBus关联,如下所示:
compile ‘org.greenrobot:eventbus:3.0.0’
2.定义事件,事件是POJO
(plain old Java object) 没有其他特殊的需求。
public
class
MessageEvent
{
public
final
String
message
;
public
MessageEvent
(
String
message
)
{
this
.
message
=
message
;
}
}
3.将Activity或者Fragment作为订阅者,来接受事件。在Android中,
Activities 和 Fragments通常根据他们的生命周期来作为订阅者绑定,如下图所示:
@Override
public
void
onStart
(
)
{
super
.
onStart
(
)
;
EventBus.
getDefault
(
)
.
register
(
this
)
;
}
@Override
public
void
onStop
(
)
{
EventBus.
getDefault
(
)
.
unregister
(
this
)
;
super
.
onStop
(
)
;
}
4.准备订阅着,订阅者实现事件处理的方法
(也可以称为 “订阅者方法”) 此方法可以被调用当一个事件发出之后.
方法可以用
@Subscribe注解在方法的上面定义
. 请注意EventBus 3 的方法名称可以随意选择 (不再像 EventBus 2中方法命名规范).如下:
// This method will be called when a MessageEvent is posted
@Subscribe
public
void
onMessageEvent
(
MessageEvent event
)
{
Toast.
makeText
(
getActivity
(
)
, event.
message
, Toast.
LENGTH_SHORT
)
.
show
(
)
;
}
// This method will be called when a SomeOtherEvent is posted
@Subscribe
public
void
handleSomethingElse
(
SomeOtherEvent event
)
{
doSomethingWith
(
event
)
;
}
5.发送一个事件,检查步骤4中的方法是否被执行,执行了就说明EventBus成功了。所有当前注册的订阅者(方法)符合这个事件类型的订阅者(方法)都会接受这个事件(方法会被执行)。
EventBus.
getDefault
(
)
.
post
(
new
MessageEvent
(
”
EventBus first
!”
)
)
;
参考资料如下:http://greenrobot.org/eventbus/