0

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

无论如何,我已经开始使用AsyncTasks我实际调用该loadAd方法(因此 UI 不再冻结)从他们的服务器请求横幅或任何内容。

每当我重新启动我的 时,都会调用ActivityonDetroy方法。Activity在那里,我调用该AscynTask's cancel方法,以便它取消任务并......大概停止/删除线程。

通过 DDMS,我注意到以下几点:

见快照:http ://bayimg.com/EAkBaAaEH

每次我调用` executeonDestroy () AsyncTask.AsynkTaskscancel(true)

重新启动后Activity,将创建另外两个AsyncTasks线程(#3 和#4)。

在另一个重新启动之后,又创建了Activity一个AsynkTask(#5)。

我怎样才能真正杀死任务?就像完全停止他们的执行一样?还是他们真的停止了,我只是误解了 DDMS?

4

1 回答 1

1

确保您没有在 Asynctask doinBackground 中执行一段时间(真)(长连续任务)之类的事情,asynctask 不应用于后台线程中的长/连续进程,如果它是一个小的后台任务,它将完成而不是 onPostExecute如果在 doinbackground 执行期间调用了取消,则将调用 oncancellistener...

至于仍然留在 DDMS 中,请检查: 执行后 AsyncTask 线程仍然存在,这正常吗?

它没有什么可怕的只是空闲线程,因为 asynctasks 在线程池中运行。空闲线程等待下一个异步任务被执行

于 2013-03-09T09:38:56.017 回答