【发布时间】:2014-05-10 05:35:27
【问题描述】:
因此,如果我有 5 个异步任务正在运行并且我取消它们,那么 UI 会冻结一点,但是如果我执行 20 个异步任务并取消它们,那么我的 UI 会冻结一段时间。我的问题是, asyncTask.cancel(true) 方法是否昂贵?我的用户界面是这样冻结的吗?我注意到当我不调用取消时,我的 UI 不会冻结。无论如何我可以防止我的用户界面冻结吗?我尝试将 .cancel(true) 方法放在它自己的线程中,但这没有帮助。
这里有一些代码。
//could be as little as 1 or could be 20
for( AsyncTask asyncTask : asyncTasks )
{
if ( asyncTask != null )
{
//seems to block UI for a bit if there are a lot of calls
asyncTask.cancel( true );
}
}
【问题讨论】:
-
你的任务的 onCancelled() 回调中有代码吗?
-
是的,但如果我注释掉回调并运行应用程序,我似乎会这样做。同样的延迟也会发生。
标签: java android multithreading android-asynctask