如何在不影响循环执行和主要活动的情况下每5秒更新一次while循环中的textview

时间:2013-01-24 06:42:19

标签: java android

  

可能重复:
  how to update the textview variable for every 5 seconds

我有两个任务要同时使用相同的数据文件。一个是读取txt文件并在chartview中绘制它。另一项任务是使用绘制的数据进行计算。我的Android应用程序布局应该在chartview上方的textview中具有这些计算结果,并且它应该持续更新5秒,同时绘图在图表中动态进行。

我遇到第二个任务的问题 - 更新textview中的值,该值在while循环中运行。我使用过Handler,Asynctask,Thread,Wait。它完美地作为java app.But,它作为一个Android应用程序工作。我的应用程序强制关闭或在启动之前采取延迟(即)应用程序仅在给定延迟后打开并显示while循环执行的最后一个值。我也在背景中做了这个,但它影响了绘图。

   while(p[y1]!=0)
 {
    rr = ((p[y1]-p[y1-1]));
    double x = rr/500;
    HR = (int) (60/x);                         
     final Handler handler=new Handler();
      handler.post(runnable);
          final Runnable runnable=new Runnable()
          {
          @Override
          public void run()
          {                      
                  hr.setText(String.valueOf(HR));
                handler.postDelayed(runnable, 5000);
          }
          };

          y1++;
            }

我希望hr值每5秒更新一次,而不会影响图表。任何人都会帮忙。在此先感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

你尝试过类似的东西,创建一个内部线程类,在它的run方法中做你需要的。你也可以尝试在跑步中睡5秒。确保你的while循环在run方法中。

我在代码下面你有一个while循环中的线程,但是你应该在一个thread.let内部循环我知道你是否面临任何问题。

boolean isAlive = true; //change it  to falst whenever u want to stop the thread
class localT extends Thread {

@Override
public void run() {
    while(isAlive) {

        try {
            sleep(5000);

            textView.setText("yourChanging text");
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }
    super.run();
};

}

使用类似localThread.start()的东西; ,kill //在暂停时停止此线程,在销毁时停止。