簡體   English   中英

在java / android +崩潰應用程序中的時間

[英]Time in java/android + crashing app

好的伙計們,我正在制作一個不斷崩潰的安卓計時器應用程序。 我正在使用一個計時器,它在25分鍾后重置,然后重新開始。 這是通過onclicklistener的開始按鈕中的for循環完成的。 在循環中我有另一個while循環,其中我通過語句為長類型變量賦值經過的時間

// for循環中while循環的內容

 while(found==1){
                temp = chrono.getBase() + SystemClock.elapsedRealtime();
                if(temp == 25*60*1000){
                    found--;
                }

我乘以1000因為時間是以毫秒為單位測量的? 我做錯了還是別的什么的。 謝謝。

while循環可能會阻塞主UI線程,直到found==1條件found==1 您可能需要的是TimerTimerTask 或者,按照本文的建議,您可以使用處理程序啟動Runnable,以每50或100毫秒更新計時器時間。 這是一個例子(未經鏈接的文章測試和改編!):

private Handler handler = new Handler();
handler.postDelayed(runnable, 100);

private Runnable runnable = new Runnable() {
   @Override
   public void run() {
      /* do what you need to do */
      boolean isTimerReady=foobar();
      /* and here comes the "trick" */
      if (!isTimerReady) handler.postDelayed(this, 100);
   }
};

這每100毫秒開始foobar() foobar()應該返回一個布爾值 - 基本上是你的while循環中的計算,並更新用戶界面。 一旦foobar()返回true, Runnable就不會重新啟動。

你正在殺死CPU,可能永遠不會停止。 溫度恰好為25 * 60 * 1000的可能性非常低。 將“==”檢查更改為“> =”。 另外,對於found,使用“boolean”:它更有意義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM