温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Android如何获取服务器与客户端时差

发布时间:2021-05-22 09:57:48 来源:亿速云 阅读:191 作者:小新 栏目:移动开发

这篇文章给大家分享的是有关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是一种基于Linux内核的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由美国Google公司和开放手机联盟领导及开发。

感谢各位的阅读!关于“Android如何获取服务器与客户端时差”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI