請讓我在執行某些操作之間獲得流逝的時間有問題。代碼是爲了在1分鐘(60,000毫秒)後執行一個動作,但是當我在我的模擬器上運行代碼時,經過的時間差通常比預期的要小,並且通常接近Thread.sleep()中的值。我曾嘗試使用System.nanoTime()甚至SystemClock.uptimeMillis()...我在正常的Java環境中做了類似的事情,它工作正常。問題可能來自模擬器,有沒有辦法做到這一點?使用System.currentTimeMillis所花費的時間在android上不能工作
long startTime=0;
long elapsedTime=0;
long totalTime = 0;
@Override
public void run() {
// TODO Auto-generated method stub
while (running) {
startTime = System.currentTimeMillis();
totalTime += elapsedTime;
Log.d("elapsed","displaying time...."+elapsedTime);
if(totalTime > 60000){
Log.d("mins","one mins gone");
totalTime = 0;
}
// do some other things here
try {
Thread.sleep(9000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
elapsedTime = System.currentTimeMillis() - startTime;
}
}
你在哪裏聲明瞭endTime變量? – Abdi
如果你只想每分鐘執行一次動作,那麼使用'BroadcastReceiver'來註冊'ACTION_TIME_TICK' - 參見http://developer.android.com/reference/android/content/Intent.html #ACTION_TIME_TICK – Squonk
@Abdi thnx注意它。它應該是elapsedTime – user3572546