2013-04-12 110 views
0
public static final long TIMEOUT = 60000; 
public static final long SYSTEM_TIME = System.currentTimeMillis(); 

我的超時值設置爲60000,我的系統時間爲我的應用程序。現在我怎麼會知道50 seconds已經過去了,我需要向最終用戶顯示一條消息。用開始時間和經過時間計算時間差

if (TIMEOUT - SYSTEM_TIME <= 10000) { 
    Toast.makeText(getApplicationContext(), "10 Seconds Left", Toast.LENGTH_LONG).show(); 
    disconnectHandler.postDelayed(disconnectCallback, DISCONNECT_TIMEOUT); 
} 
+1

使用[定時器](http://developer.android.com/intl/ru/reference/java/util/Timer.html) – jimpanzer

+0

您可以使用日曆以及 –

+0

爲什麼不使用nanoTime()進行持續時間測量? http://stackoverflow.com/questions/510462/is-system-nanotime-completely-useless – Hector

回答

1

如果你不需要在那個線程中做其他的東西,你可以使用sleep(50000)

1

這是如何運行的特定任務一次性:

new Timer().schedule(new TimerTask() {    
      @Override 
      public void run() { 
       // TODO 
       ... 
      } 
     }, TIMEOUT); 

的文檔是here(由jimpanzer報道)

1

也許,你可以使用這樣的事情:

long startTime = SystemClock.elapsedRealtime(); 
// do what you want 
long endTime = SystemClock.elapsedRealtime(); 
long ellapsedTime = endTime - startTime; 
if (ellapsedTime>TIME_OUT) { 
    // do stuff 
} 
1

也許我錯了,或只是沒有足夠的咖啡,但超時是60000,你的系統價值更多 - 所有毫秒開始於1970年(如果我沒有弄錯這裏也是)。這意味着您的TIMEOUT - SYSTEM_TIME結果是負數,因此負數小於10000.因此,您的if語句始終運行。