ユーザーが画面上のボタンをクリックするまでしばらくループしてネットワークからデータを取得し、データの受信を停止して別のアクティビティを表示したいと考えています。私が受け取るために行うことは次のとおりです。
Thread listUpdater;
...
listUpdater = new Thread() {
@Override
public void run() {
TimerTask task = new UpdateListTask();
while (true) {
task.run();
}
}
};
listUpdater.start();
...
public class UpdateListTask extends TimerTask {
public UpdateListTask() {
}
@Override
public void run() {
// get some data from network (asynchronically)
}
}
ユーザーがボタンをクリックしたら、次のコードを実行します。
try {
listUpdater.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
しかし、それは新しいスレッド/タイマー タスクの実行ループを停止しません。すべてのコードがまだ実行されています。これは望ましくありません。コードの実行を停止するにはどうすればよいですか? スレッドを停止する方法はありますか? または、while ループを停止するためにスレッド間ブール変数の設定を行うことはできますか?
私はすべてを試しましたが、成功しませんでした。誰でも助けてもらえますか?