客户端同步服务器端时间方案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
客户端同步服务器端时间⽅案/**
* @描述时间管理器,⽤来同步服务器上的时间,由于设备的时间通常不太准确
* 记录⽅法:先请求服务器上的时间,记录下来,同时记录下当前的elapsedRealtime值,
* 需要获取当前时间时,⽤最新的elapsedRealtime值减去之前记录的elapsedRealtime值,
* 再加上之前记录的服务器时间即为最新的当前时间
*
* @作者 tll
* @时间 2016/10/18
*/
public class TimeManger {
/**
* 从服务端获取到的时间戳
*/
private long currentTimeMillis;
/**
* ⾃开机后到当前设置时间的时间间隔
*/
private long elapsedRealtime;
/** 设置当前的时间戳*/
public void setCurrentTimeMillis(long currentTimeMillis) {
this.currentTimeMillis = currentTimeMillis;
setElapsedRealtime(TimeUtil.elapsedRealtime());
}
public void setElapsedRealtime(long elapsedRealtime) {
this.elapsedRealtime = elapsedRealtime;
}
/** 获取当前的时间戳*/
public long getCurrentTimeMillis() {
// 时间间隔
long dis = TimeUtil.elapsedRealtime() - elapsedRealtime;
// ⽤服务器上拿到的时间加上时间间隔即为当前的时间
return currentTimeMillis + dis;
}
}
TimeUtil.java
/** ⾃开机后,经过的时间,包括深度睡眠的时间*/
public static long elapsedRealtime()
{
return SystemClock.elapsedRealtime();
}
/** ⾃开机后,经过的时间,不包括深度睡眠的时间*/
public static long uptimeMillis()
{
return SystemClock.uptimeMillis();
}。