我正在做一个简单的与Android的异步操作,但由于我想执行几次操作,我没有使用AsyncTask,而是使用Thread/Runnable机制和Handler来处理消息和工作人员。但是当我需要执行第二个操作时,如果它仍然处于活动状态,我需要取消之前的操作。Android取消线程
我有这样的事情:
private void exec() {
new Thread(new Runnable() {
public void run() {
mBind.exec(3);
}
}).start();
}
然后在EXEC(INT一)我有一个像互为作用:
for(int i = 0; i<=res.lenght; i++) {
updateGui();
}
但在一个点上的exec()方法被调用第二时间,gui也会更新以前的结果(我只需要新的(第二个)请求的结果)。
我知道有一种方法可以用FutureTask来做到这一点,并使用cancel()或Thread的'throw ThreadDead'异常来玩,但我只是好奇我是否可以像第一次那样开始。
谢谢!
我想你可以通过创建一个AsyncTask的新实例多次执行一个AsyncTask。如果你有myTask = new MyTask(); myTask.execute(),您可以使用myTaskAgain = new MyTask再次运行任务; myTaskAgain.execute()。 P.S .:我不确定他们是否可以同时运行,还没有尝试过。我只尝试了两个不同的AsyncTasks同时运行。 – Zarah 2011-01-30 16:02:14
谢谢。虽然这不是我的疑问,但我必须说我尝试过使用AsyncTask,它会抛出异常或类似的东西..即使如此,我不知道如何取消之前触发迭代的操作。 – user584513 2011-01-30 16:16:07