AsyncTask线程永不消亡

我正在使用AsyncTasks来获取数据,以响应用户按下按钮。这样可以很好地工作,并在获取数据时保持接口的响应速度,但是当我检查Eclipse调试器中发生的情况时,我发现每次AsyncTask创建新程序时(这很常见,因为它们只能使用一次),正在创建一个新线程,但从未终止。

结果就是大量AsyncTask线程坐在那里。我不确定这在实践中是否存在问题,但是我真的很想摆脱那些多余的线程。

如何杀死这些线程?


慕田峪9158850
浏览 330回答 3
3回答

慕森王

AsyncTask管理使用创建的线程池ThreadPoolExecutor。它将具有5到128个线程。如果有5个以上的线程,那么这些多余的线程将最多保留10秒钟,然后再将其删除。(注意:这些数字是针对当前可见的开放源代码,并且因Android版本而异)。请不要理会AsyncTask线程。

梦里花落0921

目前,我正在使用Android 2.2,并且我的应用程序随时都使用不超过一个AsyncTask,但是我每隔X分钟创建一个新的AsyncTask。最初,新的AsyncTask线程开始出现(新的AsyncTask的新线程),但是在5个线程(如CommonsWare所述)之后,它们仅在调试窗口中可见,并在需要新的AsyncTask线程时重新使用。他们只是呆在那里,直到调试器断开连接。

MYYA

使用ThreadPoolExecutor。BlockingQueue workQueue= new LinkedBlockingQueue<Runnable>(100); // Work pool sizeThreadPoolExecutor executor = new ThreadPoolExecutor(&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Runtime.getRuntime().availableProcessors(),&nbsp; &nbsp; &nbsp; &nbsp;// Initial pool size&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Runtime.getRuntime().availableProcessors(),&nbsp; &nbsp; &nbsp; &nbsp;// Max pool size&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 1, // KEEP_ALIVE_TIME&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; TimeUnit.SECONDS, //&nbsp; KEEP_ALIVE_TIME_UNIT&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; workQueue);Runnable使用execute()方法发布任务 。void execute (Runnable command)在将来的某个时间执行给定的任务。该任务可以在新线程或现有池线程中执行
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Android