手机端如何和服务器同步消息,如何实现手机时间与服务器时间同步

主要通过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);

}

});

应用场景描述:比如拍照图片上加服务器时间水印

旧的思路,每次拍照的时候获取服务器时间,这样回导致拍照很慢,因为每次请求接口耗费了大量的时间

新的思路,只获取一次服务器时间,后续的服务器时间通过时钟差来计算获得,是不是快多了呢

源码

参考资料

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值