欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android 獲取服務(wù)器與客戶端時(shí)差的實(shí)例代碼

 更新時(shí)間:2018年01月04日 14:50:14   作者:AndyRenJie  
下面小編就為大家分享一篇Android 獲取服務(wù)器與客戶端時(shí)差的實(shí)例代碼,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧

一般我們在做商品倒計(jì)時(shí)的時(shí)候會(huì)遇到要從后臺獲取商品的開始時(shí)間和結(jié)束時(shí)間,還要計(jì)算商品距離開始時(shí)間的倒計(jì)時(shí)和結(jié)束時(shí)間的倒計(jì)時(shí),但是這樣只是從后臺獲取到開始時(shí)間,還要再和手機(jī)系統(tǒng)的時(shí)間相減,才能獲取到開始時(shí)間的倒計(jì)時(shí),那問題來了,如果用戶在手機(jī)上改了時(shí)間呢?是不是就會(huì)產(chǎn)生誤差,很可能其他人還沒開始,就已經(jīng)有人可以搶購了,這樣的體驗(yàn)效果就很差了,所以我們不僅要計(jì)算開始時(shí)間與當(dāng)前時(shí)間的時(shí)差,還要計(jì)算服務(wù)器與客戶端的時(shí)差,說了這么多,還是上代碼吧:

1.在項(xiàng)目啟動(dòng)的時(shí)候獲取時(shí)差并保存

/**
 * 獲取時(shí)差并保存
 * @param context
 */
public static void getDifferenceTime(final Context context){
  new Thread(new Runnable() {
    @Override
    public void run() {
      try {
        URL url = new URL(CONTENT_URL);
        //生成URLConnection連接對象
        URLConnection uc = url.openConnection();
        //發(fā)出連接
        uc.connect();
        //獲取服務(wù)器時(shí)間
        long serverTime = uc.getDate();
        //獲取服務(wù)器時(shí)間與手機(jī)系統(tǒng)時(shí)間的時(shí)差
        long differenceTime = serverTime - System.currentTimeMillis();
        //保存時(shí)差
        SaveUtil.getInstance(context).setDifferenceTime(differenceTime);
      } catch (Exception e) {
        e.printStackTrace();
      }
    }
  }).start();
}

2.Adapter中計(jì)算開始時(shí)間倒計(jì)時(shí)

//獲取列表中商品的開始時(shí)間
String startTimeStr = list.get(position).getStartTime();
long startTime = stringToLong(startTimeStr);
//活動(dòng)開始時(shí)間-手機(jī)時(shí)間-服務(wù)器時(shí)間與手機(jī)時(shí)間的相差值 = 活動(dòng)開始倒計(jì)時(shí)
long remainingTime = startTime - System.currentTimeMillis() - SaveUtil.getInstance(mContext).getDifferenceTime();

結(jié)束時(shí)間與上述方法相同,就不再次粘代碼了。我知道需要需要改進(jìn)的地方還有很多,大家不要噴的太厲害了~

以上這篇Android 獲取服務(wù)器與客戶端時(shí)差的實(shí)例代碼就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論