一般来说,用户的关注、点赞、收藏等功能的状态都是由服务器返回的。
在只有单页面用到这些功能的情况下,基本就只用靠请求网络获取状态就能达到要求。
但是在多处都用到了这些状态的情况下
如何才能更好的让整个应用内的这些用户状态达到同步。
有的人说在每次进页面,回到页面就去服务端请求一次,那当我没有讲,这也简直太牛逼了。。。
问题点:
1.如何修改本地数据;(如何保证数据是最新的)
2.如何通知界面修改UI展示;(如何保证UI展示是最新的)
1.如何修改本地数据
想到的方法就是用本地数据库进行管理,创建一张关注表,主键为userId. 另外一个字段为focus 表示是否关注

只需要在每次更新数据时,去更新这个表的内容就可以了,这样就能保证本地数据库里存的状态是当前最新的状态
但是这个只是修改了本地数据库的值,往往我们请求网络都是用model去接收网络数据,更新了数据库的值怎么去保证每一个已经存在的model的关注字段能够更新。
土方法就是 每个model 都去注册一个通知,当关注状态改变的时候就发送通知,让model去改变这个字段
2.如何通知界面修改UI展示
这里像关注、点赞这些功能都是通过用户操作触发去修改状态,所以可以将这些功能的按钮封装起来。
FocusButton 负责处理关注状态的信息,每个FocusButton 有对应的userId ,同样是应用通知,在一个button状态发生改变的时候,通知其他所有的button去更新数据,这个时候数据是从你最新的本地数据库中取的,所以所有界面的这些状态都发生了同步的变化
网友评论