随时间更新textView

时间:2015-06-05 12:44:19

标签: java android

已经有一段时间了,但我回到了Android开发阶段。 我正在创建一个简单的秒表应用程序。

我有一个Timer类和一个TextView,我想在时间运行时不断更新。 我知道我可以创建一个更新TextView的线程,但我不知道如何做到这一点。我的Timer应该扩展线程吗?

代码如何在一段时间间隔内更新textView。

这是我的Timer类:

public class Timer {

    private double startTime;
    private double endTime;
    private boolean isRunning;

    public Timer() {
        startTime = 0;
        endTime = 0;
        isRunning = false;
    }

    public void reset() {
        isRunning = true;
        startTime = System.currentTimeMillis();
    }

    public double getElapsedTime() {
        if (isRunning)
            endTime = System.currentTimeMillis();
        double timeElapsed = endTime - startTime;
        return timeElapsed;
    }
}

我也发现了related question。但我无法弄清楚如何让它发挥作用。我很感激任何代码,它显示了如何使用我的代码进行更新。我没有包含我的MainActivity,但它是FullScreenActivity示例。

1 个答案:

答案 0 :(得分:1)

试试这个。它应该更准确

class Timer extends AsyncTask<Void, String, String>
{

    @Override
    protected String doInBackground(Void... params) {
        long startTime = Calendar.getInstance().getTimeInMillis();
        long nowTime;
        while(true && !isCancelled())
        {
            nowTime = Calendar.getInstance().getTimeInMillis();
            publishProgress((float)((nowTime-startTime)/1000)+"");
            try {
                Thread.sleep(100);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }

    @Override
    protected void onProgressUpdate(String... values) {
        textview.setText(values[0]);
        super.onProgressUpdate(values);
    }

}

请勿忘记在AsyncTask

需要时停止timer.cancel(true);