簡體   English   中英

Android:如何使用 SystemClock.elapsedRealtime() 一一顯示秒?

[英]Android: how to use SystemClock.elapsedRealtime() to show second one by one?

我正在使用SystemClock.elapsedRealtime()來顯示時間。

但是現在我想根據SystemClock.elapsedRealtime()時間一一顯示要增加的秒數。
是的,我必須使用線程。

那么怎么做呢?

我已經用這個線程試過了:

// Start lengthy operation in a background thread
progressThread = new Thread(new Runnable() {

    public void run() {
        while (mProgressStatus < 1000) {
            mProgressStatus = ((int) (SystemClock.elapsedRealtime() / 10));
            // Update the progress bar
            mHandler.post(new Runnable() {

                public void run() {   
                    // try {
                    //  // progressThread.sleep(1000);
                    // } catch (InterruptedException e) {
                    //  // TODO Auto-generated catch block
                    //  e.printStackTrace();
                    // }
                    // progressBar.setProgress(mProgressStatus);
                    System.out.println("SECOND is :" + mProgressStatus);
                }
            });
        }
    }
});

那么我應該在這個線程中改變什么才能讓秒數一一增加?

請幫我解決這個問題。

謝謝。

您可以使用Chronometer類。 您可以使用setBase()將其綁定到SystemClock.elapsedRealtime() setBase() 另一種方法可能是,如果您在 Activity 中使用Handler並使用值為 1000 的sendEmptyMessageDelayed()方法來更新您的計時器。

如果您想使用第二個線程來獲取經過的時間(正如您所做的那樣),那么您必須使用某種方法來通知您的活動的主線程必須重新繪制畫布,如此此處所述。

您還可以使用已在您的活動主線程中實例化的 處理程序 從您的第二個線程(獲取系統時間),您向處理程序發送一條包含系統時間的 消息 因為處理程序在主線程中運行,所以從這里更改視圖是安全的。 我懷疑這是在 Android 上顯示系統時間的准確方法,即我認為有更好的方法。

暫無
暫無

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

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