我正在用Java編寫一個Android應用程序,並希望將變量timeHeldDown設置爲用戶按住我們應用程序上的按鈕的時間。經過一段時間後,應該爲用戶彈出一個幫助菜單。測量用戶在Java中執行某些操作的時間的最佳方法是什麼?
我環顧四周發現了Java.util中的Timer和TimerTask類。其中的一個比其他人使用的更好,還是完全有另一個類更好?
System.currentTimeMillis();可能會奏效。
我正在用Java編寫一個Android應用程序,並希望將變量timeHeldDown設置爲用戶按住我們應用程序上的按鈕的時間。經過一段時間後,應該爲用戶彈出一個幫助菜單。測量用戶在Java中執行某些操作的時間的最佳方法是什麼?
我環顧四周發現了Java.util中的Timer和TimerTask類。其中的一個比其他人使用的更好,還是完全有另一個類更好?
System.currentTimeMillis();可能會奏效。
Timer和TimerTask是不定時的庫,它們實際上是進行任務調度和運行在後臺等特定任務..
的一種方法是使用當前系統時間,雖然不是一個好辦法要做到這一點,這是最簡單的,我想聲明全局變量timeEnd /啓動和最後一次類似以下內容:
public double timeHeldDown;
public long timeStart;
public long timeEnd;
//OnPress
timeStart = System.currentTimeMillis()
//OnDepress
timeEnd = System.currentTimeMillis();
timeHeldDown = (timeEnd - timeStart)/1000;
要添加到康納·特納給出了答案,在相同的代碼你可以使用System.nanoTime()更精確。
另一種選擇是來自commons-lang的StopWatch類。
https://commons.apache.org/proper/commons-lang/javadocs/api-3.4/index.html
StopWatch stopWatch = new StopWatch();
stopWatch.start();
// do stuff
stopWatch.stop();
long nanos = stopWatch.getNanos(); // time in nanoseconds
long millis = stopWatch.getTime(); // time in millis
「更好」,將進入 「意見根據」 領土,這因此不會做。但是,如果你可以將這個改寫爲「有什麼區別」,或者可能是每個的優點,那麼這可能是可以回答的。 – Teepeemm
由於這只是測量簡單動作,currentTimeInMillis()似乎是準確的。換句話說:避免火箭科學;去爲你工作的最簡單的事情。 – GhostCat
仔細查看javadocs - Timer和TimerTask不是替代品。它們是任務調度的兩個組成部分。不,這不是你所需要的。你可以例如擴展android.widget.Button覆蓋onKeyDown/onKeyUp方法並計算這些回調的時間差異 – AJG