我有一个 EditText 和一个 AsyncTask 类。每当 EditText 中的文本发生更改时,AsyncTask 类的对象就会创建并使用字符串对其调用 execute()。并且 doBackground() 被调用,它只有一个函数,而该函数又依次具有多个 for 循环。每当文本更改时,都会为 AsyncTask 创建一个新对象。当文本改变时,旧的 Async 对象必须被取消,新的对象应该控制。但是当我在对象上调用取消时,旧的继续运行并且似乎调用 onPostExecute()。有没有办法避免这种情况。我的意思是,我可以在运行新对象之前完全杀死/(停止运行)旧的 asyncTask 对象吗?
编辑 这是我的代码,
if (getSuggestions1.getStatus() != AsyncTask.Status.RUNNING) {
getSuggestions1.cancel(true);
getSuggestions1 = new GetSuggestions1();
getSuggestions1.execute(new String[] { str });
}
如您所见,我在对同一对象调用取消后立即调用 execute()。另外,正如我所说,我有多个 for 循环(6)。我担心函数 isCancelled() 会在对象立即初始化时为其中一个 for 循环返回 true。