【发布时间】:2011-01-30 15:43:37
【问题描述】:
我正在使用 Android 进行简单的 Async 操作,但由于我想多次执行该操作,因此我没有使用 AsyncTask,而是使用带有 Handler 的 Thread/Runnable 机制来处理消息和人员。但是有一次当我需要执行第二个操作时,如果它仍然处于活动状态,我需要取消之前的操作。
我有这样的事情:
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 的“throw ThreadDead”异常来执行此操作,但我只是好奇我是否可以按照我一开始的方式执行此操作。
谢谢!
【问题讨论】:
-
我认为您可以通过创建 AsyncTask 的新实例来多次执行 AsyncTask。如果你有 myTask = new MyTask(); myTask.execute(),您可以使用 myTaskAgain = new MyTask 再次运行任务;我的任务再次执行()。 P.S.:我不确定它们是否可以同时运行,但没有尝试过。我只尝试过同时运行两个不同的 AsyncTask。
-
谢谢。虽然这不是我的问题,但我必须说我尝试过使用 AsyncTask,它会抛出异常或类似的东西.. 即使这样我也不知道如何取消之前触发迭代的操作。
标签: java android multithreading asynchronous