美文网首页
StatusManager-RecyclerView中的状态管理

StatusManager-RecyclerView中的状态管理

作者: BooQin | 来源:发表于2018-07-21 21:16 被阅读18次

前言

StatusManager用于关注,赞等状态的同步管理,从Miss项目的开发中总结出来的,进行了模块的解耦。

效果先行

status_manager

关于StatusManager

在社交类的App,点赞,关注等操作是一个很重要的元素。而在Miss项目的开放过程中,我们也加入了对应功能,设计过程中发现,通过RecyclerView来展示列表帖子,当触发关注操作时,你需要自己维护本地的dataset和界面的更新,并且存在多个子页面的情况下,必须保持多个页面间状态的同步。在实际开放过程中,总结如下:
  在RecyclerView来实现的列表展示模块中,当一个状态更新时,可分两部分,即Adapter中的Dataset和RecyclerView中显示的ViewHolder,你可以通过notifyDataSetChanged等类notify方法直接来更新界面,但这样可能会带来当前显示列表出现闪屏等现象。所以需要通过两种方式去更新。另外,不同的页面下进行状态相关操作,涉及到不同线程间的状态同步。这时就需要通过EventBus来进行数据通信,同时使用Rxjava来多个线程切换处理事件,降低主线程的占用率。

模块的设计

todo

如何使用

StatusManager提供了多个接口,对于RecyclerView,可以参考Demo,我已经实现了RecyclerViewStatusManager类,结合RecyclerView,我们需要通过以下几步来完成该模块的部署。

  • 实现IStatusBean,对应状态Bean
      该类对于于操作的元数据,即赞,关注,评论,浏览量等状态数据。你需要自己声明一个Bean类,并且实现IStatusBean,该接口提供了匹配状态key和状态类型字段。

  • 实现IStatusAdapter,对应RecyclerView中的Adapter
      需要通过Recycler中的Adapter实现该接口,通过该接口提供dataset的相关数据,以及需要更新时的回调。

  • 实现IStatusHolder,对应RecyclerView中的ViewHolder
      提供了key,以及更新界面的回调,直接更新ViewHolder的某一view,提高效率。

  • 使用RecyclerViewStatusManager
      传入RecyclerView实例化RecyclerViewStatusManager,在需要使用是调用mStatusManager.register()进行注册,在退出时调用mStatusManager.unregister()进行取消,避免内存泄露。


    @Override
    protected void onCreate(
            @Nullable
                    Bundle savedInstanceState) {
        ……

        mRecyclerView = (RecyclerView) findViewById(R.id.rv);
        ……
        mStatusManager = new RecyclerViewStatusManager(mRecyclerView);
        mStatusManager.setAdapter(statusRVAdapter);
        mStatusManager.register();
    }

    @Override
    protected void onDestroy() {
        ……
        mStatusManager.unregister();
    }
  • 发起更新
      直接通过RecyclerViewStatusManager.post(statusWrapper)发送包装好的Bean。
    StatusWrapper statusWrapper = new StatusWrapper(mFollowBean);
    RecyclerViewStatusManager.post(statusWrapper);

相关文章

  • StatusManager-RecyclerView中的状态管理

    前言 StatusManager用于关注,赞等状态的同步管理,从Miss项目的开发中总结出来的,进行了模块的解耦。...

  • Flutter初识状态管理

    Flutter中,管理状态的最常见的方法: Widget管理自身的状态 父Widget管理子Widget的状态 混...

  • Angular5中状态管理

    前面学习了vue,react 都有状态管理,如vue中的vuex是全局状态管理,在任何组件里都可以引用状态管理中的...

  • Flutter中状态管理

    在flutter开发中,我们对State来进行管理,通过State的改变,来更新界面的刷新,状态管理分为两大类:1...

  • Vue3.0实现todolist-Vue3.0定义状态管理

    定义状态管理 定义状态管理在src-store-index.js文件中把创建状态管理createStore从vue...

  • Vuex

    是什么? Vuex 是专门为Vue提供的状态管理工具 状态即数据 状态管理就是管理 Vue组件中的数据 内部机制:...

  • Flutter中状态管理的理解

    一、状态管理认知 1、核心解耦 我理解的状态管理核心思想是解耦。 和别的框架一样,Flutter中的状态管理主要是...

  • flutter中状态管理Provider

    1.1. 继承关系图 1.2. 各种Provider 1.2.1. 基础Provider 有点类似于替代 Stat...

  • 2018-04-01

    什么是vuex? Vuex 是一个专为Vue.js用程序开发的状态管理模式。 状态管理模式中的状态是指什么状态?为...

  • redux使用及理解

    Redux的特点 统一的状态管理,一个应用中只有一个仓库(store)仓库中管理了一个状态树(statetree)...

网友评论

      本文标题:StatusManager-RecyclerView中的状态管理

      本文链接:https://www.haomeiwen.com/subject/sedkmftx.html