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