Android:如何使用SystemClock.elapsedRealtime()逐个显示第二个?

时间:2012-03-05 07:47:03

标签: java android multithreading android-ndk

我正在使用SystemClock.elapsedRealtime()来显示时间。

但现在我想根据SystemClock.elapsedRealtime()时间逐一显示秒数。
是的,我必须使用thred。

那怎么办呢?

我已尝试过这个帖子:

// 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);
                }
            });
        }
    }
});

那么我应该在这个帖子中改变什么来逐一增加秒数?

请帮助我。

感谢。

2 个答案:

答案 0 :(得分:1)

您可以使用Chronometer课程。您可以使用setBase()将其绑定到SystemClock.elapsedRealtime()。另一种方法是,如果您在活动中使用Handler并使用值为1000的sendEmptyMessageDelayed()方法来更新计时器。

答案 1 :(得分:1)

如果你想使用第二个线程来获取已用时间(正如你所做的那样)那么你必须使用一些方法来通知你的Activity的主线程必须重绘画布,如上所述here并在here.

您还可以使用已在您的活动主线程中实例化的Handler。从您的第二个线程(获取系统时间)开始,您向Handler发送包含系统时间的Message。因为Handler在Main主线程中运行,所以可以安全地从这里更改Views。我怀疑这是在Android上显示系统时间的准确方法,即我认为有更好的方法。