我有一个EditText和一个AsyncTask类。每当EditText中的文本发生变化时,AsyncTask类的对象就会使用该字符串创建并调用execute()。并且doBackground()被调用,它只有一个函数,它依次具有多个for循环。 AsyncTask的新对象在文本更改时创建。 当文本更改时,旧的Async对象必须被取消,并且新的Async对象应该控制。但是当我调用对象的取消时,旧的继续运行,似乎调用onPostExecute()。 有没有办法避免这种情况。我的意思是,我可以在运行新的asyncTask对象之前彻底杀死/(停止运行)旧的asyncTask对象吗?Android:AsyncTask取消()问题
编辑 这是我的代码,
if (getSuggestions1.getStatus() != AsyncTask.Status.RUNNING) {
getSuggestions1.cancel(true);
getSuggestions1 = new GetSuggestions1();
getSuggestions1.execute(new String[] { str });
}
正如你可以打电话取消同一个对象后立即看到我调用execute()。另外,正如我所说的,我有多个循环(6)。我很担心这个函数isCancelled(),当对象立即初始化时,其中一个for循环返回true。
参见[这](http://stackoverflow.com/a/10882600/1289716)的回答可以帮助你... – MAC
“正如你所看到的,我调用execute()调用取消同一个对象后立即“。它们不是同一个对象。你用同样的指针调用它,在'new'关键字之后它指向一个新的对象。 – Budius
请参阅**在[此Android API文档页面]上取消任务**(http://developer.android.com/reference/android/os/AsyncTask.html) – Nate