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事件需要你手动进行移除!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要实现 Android ScrollView 粘性标题的效果,可以使用两种方法: 1. 使用 CoordinatorLayout 和 AppBarLayout 在布局文件中使用 CoordinatorLayout 和 AppBarLayout,并将要固定的标题放在 AppBarLayout 中的 Toolbar 中,通过设置 app:layout_scrollFlags="scroll|enterAlways|snap" 属性实现粘性标题效果。 示例代码: ```xml <androidx.coordinatorlayout.widget.CoordinatorLayout android:layout_width="match_parent" android:layout_height="match_parent"> <com.google.android.material.appbar.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <com.google.android.material.appbar.Toolbar android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" app:layout_scrollFlags="scroll|enterAlways|snap"> <!-- 固定的标题内容 --> </com.google.android.material.appbar.Toolbar> </com.google.android.material.appbar.AppBarLayout> <androidx.core.widget.NestedScrollView android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior"> <!-- 滚动内容 --> </androidx.core.widget.NestedScrollView> </androidx.coordinatorlayout.widget.CoordinatorLayout> ``` 2. 使用 StickyScrollView 使用 StickyScrollView 库,将要固定的标题放在 StickyScrollView 中即可实现粘性标题效果。 示例代码: ```xml <com.github.ksoichiro.android.observablescrollview.ObservableScrollView android:layout_width="match_parent" android:layout_height="match_parent" app:headerLayout="@layout/header_layout" app:sticky="true"> <!-- 滚动内容 --> </com.github.ksoichiro.android.observablescrollview.ObservableScrollView> ``` 注意:使用 StickyScrollView 库需要在 build.gradle 文件中添加以下依赖: ```groovy implementation 'com.github.ksoichiro:android-observablescrollview:1.6.0' ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值