刚看了下作者发布的新版本AndroidEventBus v1.0.4版本,发现加了很多好东东,最大的两个特性就是添加了粘性sticky事件和无需手动注销事件
AndroidEventBus的github地址为:github
下面是作者给出的粘性sticky事件运用场景,感觉挺给力的,这里直接粘贴复制了
User.java类 :
// 实体类实现序列化
public class User {
String name ;
String phoneNum;
// 其他字段省略
public User(String aName) {
name = aName ;
}
// 代码省略
}
首先User类不需要实现序列化接口,避免了那些样板代码。然后在MainActivity中直接将User对象作为Sticky事件发布即可。
public class MainActivity extends Activity {
// 某个点击事件
@Override
public void onClick(View v) {
User aUser = new User("Mr.Simple");
aUser.phoneNum = "123456";
// 其他数据
// 发布Sticky事件
EventBus.getDefault().postSticky(aUser);
// 跳转到ProfileActivity页面
Intent intent = new Intent(this, ProfileActivity.class);
startActivity(intent);
}
}
最后我们看看ProfileActivity如何接收数据。
public class ProfileActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_profile);
// 以Sticky的形式注册
EventBus.getDefault().registerSticky(this);
}
@Subscriber
private void receiveUser(User info){
// 这里实现你的逻辑即可, info即为传递过来的User对象
}
}
在ProfileActivity中我们将ProfileActivity自身作为订阅者注册到总线当中,此时ProfileActivity就会接收到上面发布的Sticky事件,这个事件对象就是User对象。此时就会触发ProfileActivity 中的receiveUser函数,info参数就是Sticky事件的那个用户信息对象,在receiveUser中实现自己的逻辑即可。
是的!我们并没有在onDestory中对订阅者进行注销,也就是没有调用EventBus的unregister()函数,这就是最新版的特性之一,也是目前唯一不需要手动注销的事件总线库。
这里需要注意是,粘性Sticky事件需要你手动进行移除!
时间: 2024-12-24 10:05:42