-
From: http://www.2cto.com/kf/201506/404386.html
-
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事件需要你手动进行移除!
-
刚看了下作者发布的新版本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事件需要你手动进行移除!