Can';使用睡眠计时器和TimerTask在Android中停止线程
我想在while循环中从网络获取一些数据,直到用户单击屏幕上的按钮,然后停止接收数据并显示另一个活动。我所做的接收工作如下:Can';使用睡眠计时器和TimerTask在Android中停止线程,android,multithreading,networking,Android,Multithreading,Networking,我想在while循环中从网络获取一些数据,直到用户单击屏幕上的按钮,然后停止接收数据并显示另一个活动。我所做的接收工作如下: Thread listUpdater; 用户单击按钮后,我运行以下代码: try { listUpdater.join(); } catch (InterruptedException e) { e.printStackTrace(); } 但它并没有停止新线程/计时器任务中的运行循环,所有代码仍在运行——这是我不想要的。我能做些什么来停止代码的运
Thread listUpdater;
用户单击按钮后,我运行以下代码:
try {
listUpdater.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
但它并没有停止新线程/计时器任务中的运行循环,所有代码仍在运行——这是我不想要的。我能做些什么来停止代码的运行?有没有办法停止线程?或者我可以做一些线程间布尔变量设置来停止while循环吗
我什么都试过了,但没有成功。有人可以帮忙吗?。join将等待线程完成。你的线永远不会结束,所以一切都断了 实际停止线程的一种简单方法是:
volatile boolean updateList;
Thread listUpdater;
及
通过这种方式,可以将布尔变量用作控制listUpdater线程执行的标志。记得每次要重新启动线程时都要将其设置为true。谢谢,伙计,我不知道为什么,但这次它工作得很好!:)
try {
listUpdater.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
volatile boolean updateList;
Thread listUpdater;
listUpdater = new Thread() {
@Override
public void run() {
TimerTask task = new UpdateListTask();
while (updateList) {
task.run();
}
}
};
updateList = true;
listUpdater.start();
try {
updateList = false;
listUpdater.join();
} catch (InterruptedException e) {
e.printStackTrace();
}