Android AsyncTask在完成后仍处于运行状态

tot*_*tem 10 multithreading android

在处理应用程序时,我注意到线程数一直在增长.AsyncTask线程由于某种原因保持打开状态(我确信它们已经完成处理并退出).我不知道为什么我会继续创建更多这种类型的线程,并且它们会无限期地继续运行.

有没有办法验证这些线程是否在完成时终止?是否存在AsyncTask线程保持打开的已知问题?

运行时:

public  class DoNothingTask extends AsyncTask<Void, Void, Void> {

        @Override
        protected Void doInBackground(Void... params) {
            // TODO Auto-generated method stub
            return null;
        }

    }
Run Code Online (Sandbox Code Playgroud)

我在debbuger中看到每次执行的新线程new DoNothingTask().execute(null); 如下:

Thread[<ThreadNumber>AsyncTask#1](running)

我的问题是为什么会这样?我的应用程序很大程度上依赖于AsyncTask,我不能创建新的线程并在每个任务后保持活跃状态​​.

def*_*yte 10

我也正在敲打这个问题,只是遇到了这个答案(好吧,这更多的是解释而不是答案):

CommonsWare解释说:

AsyncTask管理一个使用ThreadPoolExecutor创建的线程池.它将有5到128个线程.如果有超过5个线程,那么这些额外的线程将被移除最多10秒钟.(注意:这些数字适用于目前可见的开源代码,因Android版本而异).

请保留AsyncTask线程.

来源问题: AsyncTask线程永远不会消亡