Android系统。 AsyncTasks

时间:2013-03-09 09:30:13

标签: android ddms

我正在使用广告网络在我的应用中展示一些广告。其库中的loadAd函数有时会导致模拟器冻结(可能是因为某些防火墙问题)。

无论如何,我已经转移到使用AsyncTasks,其中我实际调用了loadAd方法(因此UI不再被释放)请求横幅或其他任何内容服务器

每当我重新启动Activity时,都会调用onDetroy的{​​{1}}方法。在那里,我调用Activity AscynTask's方法,因此它将取消任务并...可能会停止/删除该线程。

通过DDMS我注意到以下事项:

查看快照:http://bayimg.com/EAkBaAaEH

每当我调用cancel的{​​{1}}方法时,会创建两个execute(#1和#2),当我打电话时,它们似乎不会消失(被杀) `onDestroy()。

中的AsyncTask方法

AsynkTasks重新启动后,另外创建了两个cancel(true)个线程(#3和#4)。

再次重新启动Activity之后,又创建了一个AsyncTasks(#5)。

我怎么能杀死这些任务?就像完全停止执行一样?或者他们真的停止了,我只是误解了DDMS?

1 个答案:

答案 0 :(得分:1)

确保你在Asynctask doinBackground中没有做一段时间(真实)(长期连续任务)的事情,asynctask shld不能用于后台线程中的长/连续进程,如果它是一个小的后台任务,它将完成并且如果在doinbackground执行期间调用了cancel,则将调用onPostExecute oncancellistener ...

仍然留在DDMS中检查: AsyncTask thread still there after execute, is that normal?

只是空闲的线程没有什么惊人的,因为asynctasks在线程池中运行。空闲线程等待下一个asynctask执行