發生問題的程式碼大致上如下
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; } }
時間不會倒流....但手機可以。