android 仿微博评论编辑框_Android 仿微博的点赞功能的实现原理(持续点赞再取消)...

产品需求,实现类似微博的持续点赞再取消功能,因为自己也偶尔刷微博,对这功能有一定的使用上的了解,

至于微博点赞的具体实现我并不知道,微博点赞在断网的情况下依然能点赞,不会提示网络异常,等有网络之后

重新刷新,实际是没有点赞的,那就针对这现象去实现吧.

避免并发,减少CPU压力,我个人会想到 HandlerThread ,不懂可以自行科普,这里只说我实现的点赞功能原理.

private Timer mTimer;//定时器

private TimerTask mTask;

mMap = new HashMap<>();

mMainHandler = new MainHandler();//处理主线程任务

mHandlerThread = new HandlerThread("praise_thread");

mHandlerThread.start();//start()必须要在getLooper()前调用

mThreadHandler = new ChildThreadHandler(mHandlerThread.getLooper());//处理子线程任务

自身封装一个单列的管理类:

private Map> mMap;//基于自身需求实现一个点赞的消息管理器,我这里第一个key是用户,第二个key是内容的唯一ID

把点赞消息存放在管理器和加入任务队列

public void addReport(String userId,long aId,int state) {

stopTask();//停止定时器

init();//初始化操作

Map map;

if (mMap.containsKey(userId)) {//这是处理用户key

map = mMap.get(userId);

} else {

map = new Hashtable<>();//避免重复,自行科普

mMap.put(userId,map);

}

if (!map.containsKey(aId)) {//如果存在说明handler队列已经有但还没被处理

sendMsg(mThreadHandler,userId,aId,state);//把任务加到子线程

}

map.put(aId,state);//记录要提交的内容点赞状态

}

子线程消息处理:上报用户操作的消息,把上报结果发回给主线程

主线程消息处理 :  取出map里面对应的值和上报结果比较,

1.存在一致性,则移除map中对应的key-value,再断map是否还有消息没有上报,

否则开启定时器,定时把线程终止掉.

2.非一致性,则重新向子线程发送上报消息.

总结

以上所述是小编给大家介绍的Android 仿微博的点赞功能的实现原理(持续点赞再取消),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对编程小技巧网站的支持!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值