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

刚看了下作者发布的新版本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

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

Atitit. C#.net clr 2.0  4.0新特性

Atitit. C#.net clr 2.0  4.0新特性 1. CLR内部结构1 2. CLR 版本发展史3 3. CLR 2.0 3 4. CLR 4 新特性 概览4 4.1.1.  托管与本地代码的互操作5 4.1.2.    垃圾回收6 4.1.3.    代码约定6 4.1.4.    Corrupted state exception6 4.1.5.     新的安全模型7 4.1.6.     同一个进程,多个CLR7 4.1.7.     基本类库7 5. CLR最新发展8 6

Android 5.X新特性之为RecyclerView添加下拉刷新和上拉加载及SwipeRefreshLayout实现原理

RecyclerView已经写过两篇文章了,分别是Android 5.X新特性之RecyclerView基本解析及无限复用 和 Android 5.X新特性之为RecyclerView添加HeaderView和FooterView,既然来到这里还没学习的,先去学习下吧. 今天我们的主题是学习为RecyclerView添加下拉刷新和上拉加载功能. 首先,我们先来学习下拉刷新,google公司已经为我们提供的一个很好的包装类,那就是SwipeRefreshLayout,这个类可以支持我们向下滑动并进

Oracle中表添加带有默认值列的讨论(包括12C新特性)

这个问题是我一直都在关注的问题. 11G关于这个问题已经有了改善,到了12C更是多了一些新特性 关于11G的新特性讨论,参考我这篇博客http://blog.csdn.net/dbcrocodile/article/details/21170407 12C关于这方面是在11G新特性上进行添加的. 11G中添加一列并设置默认值,不会对表中实际数据做更改,而是通过对数据字典中做标记 我们查询的时候,会对新列做一个类似nvl()之类的操作,如果是null,则返回默认的数值. 但是,看如下语句 SQL>

Atitit.aticmd v4  新特性q39 添加定时器释放功能

Atitit.aticmd v4  新特性q39 添加定时器释放功能 V1  实现兰cmd V2 标准输入,标准输出,标准错误与重新定向 V3  stdout stderr统一重新定向 V4  添加定时器释放功能 V5   兼容性的.net java php V6   bigfile output的solu  ,arg sh all total ret... 作者:: 绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 ) 汉字名:

css3新添加哪些新特性?

css3新特性: 1.圆角border-radius:10px:如果是圆形,value写成50%即可. 2.盒模型添加的阴影:box-shadow:5px 5px 10px;分别是 横向阴影长度,竖向阴影长度和阴影自身的长度   当然后面可以继续添加inset  ,表示内侧阴影. 3.对文字添加阴影:text-shadow,同上. 4.线行渐变,gradient 5.旋转角度:transform,比如说,transform:rotate(9deg)  scale(0.85 0.9) 6.tran

iOS7与以前版本比较,添加的新特性

全新UI设计iOS7最大的变化莫过于UI设计,也许你会说UI设计“这是设计师大大们应该关注的事情,不关开发者的事,我们只需要替换图片就行了”.那你就错了.UI的变化必然带来使用习惯和方式的转变,如何运用iOS7的UI,如何是自己的应用更切合新的系统,都是需要考虑的事情.另外值得注意的是,使用iOS7 SDK(现在只有Xcode5预览版提供)打包的应用在iOS7上运行时将会自动使用iOS7的新界面,所以原有应用可能需要对新界面进行重大调整.具体的iOS7中所使用的UI元素的人际交互界面文档,可以从

如何给非AppCompatActivity添加Toolbar?--关于5.0新特性兼容5.0以下设备的探索

Android支持包22.1引进了AppCompatDelegate 最新22.1版本的支持包引入了大量酷炫的新特性,这些特性将允许我们轻易地将材料设计/API 21+的特性应用到之前的那些老的,不兼容的Activity上面. 我们知道,继承AppCompatActivity是最容易实现的方式,但是有时候我们还是需要使用老办法,对吗? 你可以使用支持包提供了新的AppCompatDelegate构件,很容易地将Toolbar添加到Activity上. 1,将Toolbar控件添加到布局文件上面

iOS- 给App添加内购& 验证购买iOS7新特性

http://blog.csdn.net/tspangle/article/details/39315355 1.内购——应用内购买 我所说的内购——也可以说是应用内购买 大家都知道通过苹果应用程序商店有三种主要赚钱的方式: 1.直接收费(与国内大部分用户的消费习惯相悖,如果要收费,直接收高的,别收6块钱) 2.广告(降低用户体验 应用程序名称带Lite可以添加广告) 3.内购 至于设计哪些卖钱?产品经理需要认真考虑和调研的.记录用户行为是可以帮助产品经理确认哪些收费! 所以要做好游戏,一定要研

Android 5.X新特性之为RecyclerView添加HeaderView和FooterView

上一节我们讲到了 Android 5.X新特性之RecyclerView基本解析及无限复用 相信大家也应该熟悉了RecyclerView的基本使用,这一节我们来学习下,为RecyclerView添加HeaderView和FooterView. 针对RecyclerView的头部和底部,官方并没有给我们提供像listView一样可以直接通过addHeaderView()/addFooterView()的方法,所以只能靠我们自己去实现了,那怎么实现呢?大家都知道RecyclerView已经为我们封装