我正在使用 Android 执行一个简单的异步操作,但由于我想执行几次操作,所以我没有使用 AsyncTask,而是使用带有 Handler 的 Thread/Runnable 机制来处理消息和人员。但是在某一时刻,当我需要执行第二个操作时,如果前一个操作仍然处于 Activity 状态,我需要取消它。
我有这样的东西:
private void exec() {
new Thread(new Runnable() {
public void run() {
mBind.exec(3);
}
}).start();
}
然后在 exec(int a) 中我有一个像这样的交互:
for(int i = 0; i<=res.lenght; i++) {
updateGui();
}
但有一次 exec() 方法被第二次调用,并且 gui 也更新为以前的结果(我只需要新的(第二次)请求的结果)。
我知道可以通过 FutureTask 和 cancel() 或 Thread 的“抛出 ThreadDead”异常来实现这一点,但我只是好奇我是否可以像一开始那样做。
谢谢!
最佳答案
我从你的问题中了解到,如果新线程启动,你想取消当前正在运行的线程。
这可以通过调用Thread 的interrupt() 方法来实现,这将中断当前正在运行的线程,并抛出InterruptedException。
Thread t1 = null;
private void exec() {
t1 = new Thread(new Runnable() {
public void run() {
mBind.exec(3);
}
}).start();
}
调用exec之前,调用t1.interrupt()。
关于java - Android取消线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4843755/