通知到来,各级页面添加小红点

需求描述

微信消息列表中的小红点为一级小红点
点击订阅号后,订阅列表页面为二级小红点
点击某一个订阅号后,消除该订阅号相关各级小红点
微信只是一个小例子,我的项目中,小红点的级数是超多的.

项目样例:

员工提交请假申请单,人事会收到后台推送,推送中附带一个code

code 含义
200 请假
201 出差
300 入职
301 辞职

人事一级页面

  • 基本功能(添加小红点,显示200,201,300,301小红点数量总和)
  • 其他功能(添加小红点,显示......小红点数量总和)

人事二级页面(基本功能)

  • 审批(添加小红点,显示200,201小红点数量总和)
  • 档案(添加小红点,显示300小红点数量总和)
  • 合同(301)

人事三级页面(审批)

  • 请假(添加小红点,显示200小红点数量总和)
  • 出差(添加小红点,显示201小红点数量总和)

人事四级页面(请假)

  • 进入此页面消除掉请假的小红点数量
方案:
  • 原始方案
    • 收到推送后,使用RxBus发送相应code的通知
    • 各级页面注册各个条目的所有code,收到通知后,计算红点总和更新界面
    • 当需要添加一个code的时候,各级涵盖该code的页面都要修改相应的处理

这种方案想想都要疯了

  • 改进版本
    • 一级页面,比如基本功能,只需告诉它,该条目的红点数来源于二级页面(基本功能)
    • 二级页面,比如审批,只需告诉它,该条目的红点数来源于三级页面(审批)
    • 三级页面,比如请假,只需告诉它,该条目的红点数来源于四级页面(请假)
    • 四级页面,定义该页面处理的code值,可多个,页面退出时,自动消除code对应的各级红点数

使用方式

一级页面基本功能红点处理

    /**
     * classes 所管理的页面
     * @param num 所管理页面红点总数
     */
    @DealCodeClass(classes = {基本功能Activity.class})
    public void unpdate(int num) {
        //根据红点总数更新界面
        ......
    }

二级页面审批红点处理

    /**
     * classes 所管理的页面
     * @param num 所管理页面红点总数
     */
    @DealCodeClass(classes = {审批Activity.class})
    public void unpdate(int num) {
        //根据红点总数更新界面
        ......
    }

三级页面请假红点处理

    /**
     * classes 所管理的页面
     * @param num 所管理页面红点总数
     */
    @DealCodeClass(classes = {请假Activity.class})
    public void unpdate(int num) {
        //根据红点总数更新界面
        ......
    }

四级页面请假消息处理

@DealCode(codes = {200})
public class 请假Activity  {
    /**
     * 收到RxBus通知时,调用该方法
     * codes 表示通知的码 可多个,该codes各级页面自动管理
     * code 表示通知的码 一个,该code各级页面不管理
     */
    @Subscribe(codes = {200}, threadMode = ThreadMode.MAIN)
    public void refreshCode() {

    }
}

你可能感兴趣的:(通知到来,各级页面添加小红点)