Android 安卓异步任务

Android 安卓异步任务,android,ddms,Android,Ddms,我正在使用广告网络在我的应用程序中显示一些广告。他们库中的loadAd函数有时会导致仿真器冻结(可能是因为某些防火墙问题) 无论如何,我已经开始使用AsyncTasks,在其中我实际调用了loadAd方法(这样用户界面就不会再刷新了),从他们的服务器请求横幅或任何东西 每当我重新启动活动,都会调用活动的onDetroy方法。在这里,我调用AscynTask的取消方法,这样它将取消任务并。。。可能停止/移除螺纹 通过DDMS,我注意到以下几点: 请参阅快照: 每次我调用AsyncTask的exec

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

无论如何,我已经开始使用
AsyncTasks
,在其中我实际调用了
loadAd
方法(这样用户界面就不会再刷新了),从他们的服务器请求横幅或任何东西

每当我重新启动
活动
,都会调用
活动
onDetroy
方法。在这里,我调用
AscynTask的
取消
方法,这样它将取消任务并。。。可能停止/移除螺纹

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

请参阅快照:

每次我调用
AsyncTask
execute
方法时,都会创建两个
asynktask
(#1和#2),当我调用`ondestory()中的
cancel(true)
方法时,它们似乎不会消失(被杀死)

活动
重新启动后,将创建另外两个
异步任务
线程(#3和#4)

再次重新启动
活动
后,将创建另一个
AsynkTask
(#5)


我如何才能真正结束任务?比如说完全停止处决他们?或者他们真的停止了,而我只是误解了DDM?

确保你没有在Asynctask中做一段时间(真的)(长时间连续任务)之类的事情。在后台,Asynctask不能用于长时间/连续的进程,如果它是一个小的后台任务,它将完成,而不是onPostExecute oncancellistener将被调用,如果在doinbackground执行期间调用了cancelled

对于DDMS中的剩余部分,请检查:


这并没有什么,只是空闲线程,因为异步任务在线程池中运行。空闲线程等待下一个异步任务执行

当取消被称为asyntask时,doinBackground将继续其作业,当它完成时,而不是onPostExecute。。在Ad加载和所有操作完成后(在
doInBackground
中列出的操作完成后),OnCancelListener将被调用,它仍然显示在
DDMS
中。为什么呢?为什么它不从DDMS中消失?还有一件事。。。当调用
AsyncTask
onCancelled
方法时,该强制是否会停止执行
doInBackground
方法中的任何内容?如果有一个
while(1)
,当我调用
cancel(true)
时,会不会“杀死”所有东西,不管它是什么?这是线程停止的保证吗?或者我必须在
onCancelled
方法中执行某些操作以强制代码停止(取决于
doInBackground
中的代码。可能设置一个标志或其他内容。)?Asyntask中有一个方法isCancelled(),如果出现true中断,请在While(true)循环中检查其布尔值。。。是的,我一分钟前刚刚看了一下。:)杰出的非常感谢您的时间。还请注意,asynctask是基于线程池的,所以如果您的线程池限制达到5(不完全确定),新的asynctask将进入等待状态,并且仅在前一个线程完成时执行。。。只是一个提示,我有一个asynctask,虽然(true)在服务中,但很少有活动,突然新的asynctask停止执行doinbackgrounds。这让我很困惑:)让你知道