产品需求,实现类似微博的持续点赞再取消功能,因为自己也偶尔刷微博,对这功能有一定的使用上的了解,
至于微博点赞的具体实现我并不知道,微博点赞在断网的情况下依然能点赞,不会提示网络异常,等有网络之后
重新刷新,实际是没有点赞的,那就针对这现象去实现吧.
避免并发,减少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<String, Map<Long, Integer>> mMap;//基于自身需求实现一个点赞的消息管理器,我这里第一个key是用户,第二个key是内容的唯一ID
把点赞消息存放在管理器和加入任务队列
public void addReport(String userId, long aId, int state) { stopTask();//停止定时器 init();//初始化操作 Map<Long, Integer> 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, 0, userId, aId, state);//把任务加到子线程 } map.put(aId, state);//记录要提交的内容点赞状态 }
子线程消息处理:上报用户操作的消息,把上报结果发回给主线程
主线程消息处理 : 取出map里面对应的值和上报结果比较,
1.存在一致性,则移除map中对应的key-value,再断map是否还有消息没有上报,
否则开启定时器,定时把线程终止掉.
2.非一致性,则重新向子线程发送上报消息.
总结
以上所述是小编给大家介绍的Android 仿微博的点赞功能的实现原理(持续点赞再取消),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对小牛知识库网站的支持!
本文向大家介绍jquery点赞功能实现代码 点个赞吧!,包括了jquery点赞功能实现代码 点个赞吧!的使用技巧和注意事项,需要的朋友参考一下 要实现的点赞功能比较简单,就是实现点击按钮,有心向上飘,一直飘出屏幕外。 首先只需要在body中定义一个button。和盛放心的盒子 由于还要引进心的图片,所以在这里我们在设置css样式的时候还要设置图片img的样式。 css代码如下: 下来就是要写jqu
本文向大家介绍Android PraiseTextView实现朋友圈点赞功能,包括了Android PraiseTextView实现朋友圈点赞功能的使用技巧和注意事项,需要的朋友参考一下 PraiseTextView 说明 我是将朋友圈分成了几个独立模块单独自定义的View,通过回调完成交互,耦合性算是非常低了,主要有以下及部分: 1.评论布局(自定义TextView) CommentListTe
本文向大家介绍uni-app实现点赞评论功能,包括了uni-app实现点赞评论功能的使用技巧和注意事项,需要的朋友参考一下 模拟朋友圈实时点赞及评论功能 点赞思路:点击的时候,使用push(点赞)以及slice(取消赞)方法处理数组,并且调用点赞接口 评论思路:点击的时候,写多一个评论列表,当点击发送的时候commentStatus=true,且索引等于点击的索引。同时调用获取评论列表的接口 ht
本文向大家介绍Selenium实现微博自动化运营之关注、点赞、评论功能,包括了Selenium实现微博自动化运营之关注、点赞、评论功能的使用技巧和注意事项,需要的朋友参考一下 Selenium 是什么? Selenium是一个用于Web应用程序测试的工具,可以模拟真正的用户操作,支持多种浏览器,如Firefox,Safari,Google Chrome,Opera等。 Selenium 模拟的就是
点赞 取消点赞 点赞 POST /music/{music}/like Reponse Status 201 Created { "message": [ "点赞成功" ] } 取消点赞 DELETE /music/{music}/like Reponse Status 204 No Content
本文向大家介绍python实现QQ空间自动点赞功能,包括了python实现QQ空间自动点赞功能的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了python实现QQ空间自动点赞的具体代码,供大家参考,具体内容如下 项目github地址 使用python实现qq空间自动点赞功能。 需自行安装库并配置环境。 我想实现的是每6个小时就自动更新一次cookie。这也是和网上其他版本相比具有的优