已经有一段时间了,但我回到了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示例。
答案 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);