Android 获取服务器与客户端时差的实例代码

 更新时间:2018年01月04日 14:50:14   作者:AndyRenJie  
下面小编就为大家分享一篇Android 获取服务器与客户端时差的实例代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

一般我们在做商品倒计时的时候会遇到要从后台获取商品的开始时间和结束时间,还要计算商品距离开始时间的倒计时和结束时间的倒计时,但是这样只是从后台获取到开始时间,还要再和手机系统的时间相减,才能获取到开始时间的倒计时,那问题来了,如果用户在手机上改了时间呢?是不是就会产生误差,很可能其他人还没开始,就已经有人可以抢购了,这样的体验效果就很差了,所以我们不仅要计算开始时间与当前时间的时差,还要计算服务器与客户端的时差,说了这么多,还是上代码吧:

1.在项目启动的时候获取时差并保存

/**
 * 获取时差并保存
 * @param context
 */
public static void getDifferenceTime(final Context context){
  new Thread(new Runnable() {
    @Override
    public void run() {
      try {
        URL url = new URL(CONTENT_URL);
        //生成URLConnection连接对象
        URLConnection uc = url.openConnection();
        //发出连接
        uc.connect();
        //获取服务器时间
        long serverTime = uc.getDate();
        //获取服务器时间与手机系统时间的时差
        long differenceTime = serverTime - System.currentTimeMillis();
        //保存时差
        SaveUtil.getInstance(context).setDifferenceTime(differenceTime);
      } catch (Exception e) {
        e.printStackTrace();
      }
    }
  }).start();
}

2.Adapter中计算开始时间倒计时

//获取列表中商品的开始时间
String startTimeStr = list.get(position).getStartTime();
long startTime = stringToLong(startTimeStr);
//活动开始时间-手机时间-服务器时间与手机时间的相差值 = 活动开始倒计时
long remainingTime = startTime - System.currentTimeMillis() - SaveUtil.getInstance(mContext).getDifferenceTime();

结束时间与上述方法相同,就不再次粘代码了。我知道需要需要改进的地方还有很多,大家不要喷的太厉害了~

以上这篇Android 获取服务器与客户端时差的实例代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 上传Android项目至github的解析

    上传Android项目至github的解析

    本文主要讲解了如何将自己的android项目上传至github,相信大家平时在开发过程中为了避免重复造轮子会经常逛一下github查看有没有与需求类似的开源项目,那么github上面的开源项目是如何上传至github上的呢?
    2018-05-05
  • Android checkbox的listView(多选,全选,反选)具体实现方法

    Android checkbox的listView(多选,全选,反选)具体实现方法

    由于listview的一些特性,刚开始写这种需求的功能的时候都会碰到一些问题,重点就是存储每个checkbox的状态值,在这里分享出了完美解决方法:
    2013-06-06
  • Android开发高仿课程表的布局实例详解

    Android开发高仿课程表的布局实例详解

    这篇文章主要介绍了Android开发高仿课程表的布局实例详解的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-10-10
  • Android EasyBarrage实现轻量级弹幕效果

    Android EasyBarrage实现轻量级弹幕效果

    本篇文章主要介绍了Android EasyBarrage实现轻量级弹幕效果,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • Android复选框对话框用法实例简析

    Android复选框对话框用法实例简析

    这篇文章主要介绍了Android复选框对话框用法,结合实例形式简单分析了Android复选对话框的创建与使用技巧,需要的朋友可以参考下
    2016-01-01
  • 浅谈Android解决65535问题的方法

    浅谈Android解决65535问题的方法

    下面小编就为大家分享一篇浅谈Android解决65535问题的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-01-01
  • Android自定义顶部标题栏

    Android自定义顶部标题栏

    这篇文章主要为大家详细介绍了Android自定义顶部标题栏,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-04-04
  • Android一次性退出多个Activity的方法

    Android一次性退出多个Activity的方法

    这篇文章主要介绍了Android一次性退出多个Activity的方法,结合实例形式分析了Activity的创建,继承,遍历与关闭等实现步骤与相关技巧,需要的朋友可以参考下
    2016-02-02
  • PHP autoload 机制详解

    PHP autoload 机制详解

    本文主要介绍 PHP autoload 机制,这里整理了详细的知识资料供大家学习参考,希望能帮助有需要的小伙伴
    2016-08-08
  • Android自定义View实现可展开、会呼吸的按钮

    Android自定义View实现可展开、会呼吸的按钮

    这篇文章主要为大家详细介绍了Android自定义View实现可展开、会呼吸的按钮,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-08-08

最新评论