Android 仿微博的点赞功能的实现原理(持续点赞再取消)

所属分类: 软件编程 / Android 阅读数: 35
收藏 0 赞 0 分享

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

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

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

            避免并发,减少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 仿微博的点赞功能的实现原理(持续点赞再取消),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

更多精彩内容其他人还在看

Android异常 java.lang.IllegalStateException解决方法

这篇文章主要介绍了Android异常 java.lang.IllegalStateException解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Android中Split()字符串分割特殊用法案例详解

本文通过案例的形式给大家详细介绍了android中split()字符串分割特殊用法的知识,非常不错具有参考借鉴价值,感兴趣的朋友参考下
收藏 0 赞 0 分享

Android仿新浪微博启动界面或登陆界面(1)

这篇文章主要为大家详细介绍了Android仿新浪微博启动界面或登陆界面的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Android仿新浪微博oauth2.0授权界面实现代码(2)

这篇文章主要为大家详细介绍了Android仿新浪微博oauth2.0授权界面实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Android开发中使用sqlite实现新闻收藏和取消收藏的功能

本篇文章主要介绍了sqlite实现新闻收藏和取消收藏功能,主要涉及到oracle数据库方面的内容,对于Android开发sqlite实现收藏和取消功能感兴趣的朋友可以参考下本文
收藏 0 赞 0 分享

Android仿新浪微博分页管理界面(3)

这篇文章主要为大家详细介绍了Android仿新浪微博分页管理界面,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Android UI自定义ListView实现下拉刷新和加载更多效果

这篇文章主要介绍了Android UI自定义ListView实现下拉刷新和加载更多效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Android—基于微信开放平台v3SDK开发(微信支付填坑)

这篇文章主要介绍了Android—基于微信开放平台v3SDK开发(微信支付填坑),具有一定的参考价值,有需要的可以了解一下。
收藏 0 赞 0 分享

Android仿新浪微博自定义ListView下拉刷新(4)

这篇文章主要为大家详细介绍了Android仿新浪微博自定义ListView下拉刷新,重点介绍了Adapter的详细代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Android控件之使用ListView实现时间轴效果

这篇文章主要介绍了Android基础控件之使用ListView实现时间轴效果的相关资料,本文是以查看物流信息为例,给大家介绍了listview时间轴的实现代码,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多