美文网首页
如何实现手机时间与服务器时间同步

如何实现手机时间与服务器时间同步

作者: 微小码 | 来源:发表于2016-07-06 20:23 被阅读2738次

    主要通过SystemClock.elapsedRealtime()来实现
    实现原理:首先获取服务器时间,并记录获取服务器时间时当时的时钟值,当要重新获取服务器时间时,只需要用当前的时钟值-获取服务器时间时当时的时钟值+之前的服务器时间=现在的服务器时间
    核心代码:

       df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        // 服务器时间
        serverTime = new Date(); // 这里取本地时间,为了测试
        // 开机之后会保持一个时钟(绝对时间)
        C1 = SystemClock.elapsedRealtime();
        
        showText = (TextView)findViewById(R.id.showText);
        
        Button button = (Button)findViewById(R.id.testButton);
        button.setText("当前时间:"+df.format(serverTime));
        button.setOnClickListener(new OnClickListener() {
           @Override
           public void onClick(View v) {
            C2 = SystemClock.elapsedRealtime();
            // 当前时间=服务器时间+时间差
            Date curDate = new Date(serverTime.getTime()+(C2-C1));
    
            String s = df.format(curDate);
            showText.setText("最新当前时间:"+s);
           }
          });
    

    应用场景描述:比如拍照图片上加服务器时间水印
    旧的思路,每次拍照的时候获取服务器时间,这样回导致拍照很慢,因为每次请求接口耗费了大量的时间
    新的思路,只获取一次服务器时间,后续的服务器时间通过时钟差来计算获得,是不是快多了呢

    源码

    https://github.com/andli0626/ServerTimeTest.git

    参考资料

    http://www.tuicool.com/articles/Inm2Uf

    相关文章

      网友评论

          本文标题:如何实现手机时间与服务器时间同步

          本文链接:https://www.haomeiwen.com/subject/wlwkjttx.html