Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 随时间更新文本视图_Java_Android - Fatal编程技术网

Java 随时间更新文本视图

Java 随时间更新文本视图,java,android,Java,Android,已经有一段时间了,但我又回到了android开发。 我正在创建一个简单的秒表应用程序 我有一个Timer类和一个TextView,我想随着时间的推移不断更新它。 我知道我可以创建一个线程来更新TextView,但我不知道该怎么做。我的计时器应该延长线程吗 在一个时间间隔内更新textView的代码看起来如何 这是我的计时器类: public class Timer { private double startTime; private double endTime; p

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

我有一个Timer类和一个TextView,我想随着时间的推移不断更新它。 我知道我可以创建一个线程来更新TextView,但我不知道该怎么做。我的计时器应该延长线程吗

在一个时间间隔内更新textView的代码看起来如何

这是我的计时器类:

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

我也发现了这个。但我不知道该怎么做。如果有任何代码能够说明如何使用我的代码进行更新,我将不胜感激。我没有包括我的主要活动,但它是示例FullScreenActivity

试试这个。应该更准确

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

}
类计时器扩展异步任务
{
@凌驾
受保护字符串doInBackground(无效…参数){
long startTime=Calendar.getInstance().getTimeInMillis();
时间长;
while(true&!isCancelled())
{
nowTime=Calendar.getInstance().getTimeInMillis();
出版进度((float)((nowTime startTime)/1000)+”;
试一试{
睡眠(100);
}捕捉(中断异常e){
e、 printStackTrace();
}
}
}
@凌驾
受保护的void onProgressUpdate(字符串…值){
setText(值[0]);
super.onProgressUpdate(值);
}
}

计时器需要时,不要忘记停止
异步任务
。取消(true)

您打算为此使用服务吗?就像在相关问题中一样,对于链接问题中被接受的答案,什么不起作用?懒得使用谷歌?似乎应该起作用。我可能错过了什么。我已经创建了一个setTextView()方法,以便可以在Timer类中使用指定的textView。但是,当我从MainActivity设置textView时,它不会得到更新。我想我醒来时会看看的。谢谢你的帮助我今天在办公室有空,所以我尝试了我的代码。它在emulator上运行良好,但在我的HTC 816G上却不起作用。希望能有帮助。它还使系统滞后,所以在循环中插入100毫秒的线程睡眠可能会有所帮助。