2018年12月17日 星期一

[Android] 時間會倒流 ...Orz

最近遇到QC單位跑來說在把手機時間往前調幾小時後,APP失效了,調整前是OK的。

發生問題的程式碼大致上如下

long lastTime=0 ;
long now=0;

public void myFun()
{
    now=System.currentTimeMillis();

    if (now-lastTime>500)
   {
       //do something
      lastTime=now;
   }
}

當QC單位的人操作過一次後last=now 之後,System.currentTimeMillis() 會取出相對於1970/1/1 以來的亳秒,但此時將時間往前幾個小時之後,在這幾個小時內now將持續小於lastTime,因此不會有任何反應。

解決方式是使用絕對值來計算二者時間。


long lastTime=0 ;
long now=0;

public void myFun()
{
    now=System.currentTimeMillis();

    if (Math.abs(now-lasttime)>500)
   {
       //do something
      last=now;
   }
}

時間不會倒流....但手機可以。