-2

重複の可能性:
textview 変数を 5 秒ごとに更新する方法

同じデータ ファイルを使用して同時に実行するタスクが 2 つあります。1 つは、txt ファイルを読み取り、チャートビューにプロットすることです。もう 1 つのタスクは、プロットされたデータを使用して計算を行うことです。私のAndroidアプリのレイアウトでは、これらの計算結果がチャートビューの上のテキストビューに表示され、チャートで動的にプロットが行われている間、5秒間常に更新されるはずです。

2番目のタスクに問題があります-whileループで実行されるテキストビューの値を更新します。Handler、Asynctask、Thread、Wait を使用しました。Java アプリとしては完璧に動作しますが、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++;
            }

チャートに影響を与えずに、5 秒ごとに hr 値を更新したいと考えています。誰でも助けてください。助けてくれてありがとう。

4

1 に答える 1

0

内部スレッドクラスを作成し、その実行メソッドで必要なことを行います。実行中に 5 秒間スリープすることもできます。while ループが run メソッド内にあることを確認してください。

以下のコードでは、while ループ内にスレッドがありますが、スレッド内にループが必要です。これを行う際に問題が発生した場合はお知らせください。

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// 一時停止時、破棄時にこのスレッドを停止します。

于 2013-01-24T07:03:43.700 に答える