码迷,mamicode.com
首页 > 移动开发 > 详细

AndroidEventBus新特性:添加粘性事件、不需要手动注销事件总线

时间:2015-06-01 22:52:32      阅读:228      评论:0      收藏:0      [点我收藏+]

标签:事件总线   eventbus   android   

刚看了下作者发布的新版本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事件需要你手动进行移除!

AndroidEventBus新特性:添加粘性事件、不需要手动注销事件总线

标签:事件总线   eventbus   android   

原文地址:http://blog.csdn.net/hanhailong726188/article/details/46314313

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!