背景:
1、红点提示要能在不同的地方显示,不同地方显示数据要能保证统一;
2、各处红点显示之间存在依赖关系,比如父页面显示的红点个数是子页面的累加;
解决方案:
1、数据结构---自动构建红点树,
data class KyBadgeNode(
val parent: KyBadgeNode? = null,
val label: String = "",
var badgeValue: Int = 0,
val children: ArrayList<KyBadgeNode> = ArrayList()) }
2、数据来源使用长连接;
3、对外提供的接口包括:
setBadge(value,path)
getBadge(path):Observable
fetchBadgeValue(path):Int
待扩展的地方:
1、父节点可能有自己的value, 这种情况需要对 Node 添加字段表示自己value;