这种情况与标准Java没有任何不同。您可以使用标准方法停止线程:
代码语言:javascript运行复制class WorkerThread extends Thread {
volatile boolean running = true;
public void run() {
// Do work...
if (!running) return;
//Continue doing the work
}
}主要思想是时不时地检查字段的值。当您需要停止线程时,将running设置为false。此外,正如Chris所指出的,您可以使用中断机制。
顺便说一句,当您使用AsyncTask时,您的分配不会有太大的不同。唯一的区别是,您必须从任务中调用isCancel()方法,而不是使用特殊字段。如果你调用cancel(true),但是没有实现这个机制,线程仍然不会自动停止,它会运行到最后。