客戶端同步服務器端時間方案


 

/**
* @描述 時間管理器,用來同步服務器上的時間,由於設備的時間通常不太准確
* 記錄方法:先請求服務器上的時間,記錄下來,同時記錄下當前的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();
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM