我如何知道我的android应用程序的线程与哪个元素相关?

我如何知道我的android应用程序的线程与哪个元素相关?,android,multithreading,Android,Multithreading,首先,我不会手动创建线程 我可以监控android应用程序的线程: 如何知道这些线程与哪些元素相关 例如,所有httpXX线程或AsyncTask#X,是否有方法知道它们在代码中的何处创建?因为他们每次都呆在那里,我害怕泄露记忆 相反,我有一个ImageCache,可以在线程中加载图像。当我在显示图像的视图中时,这些线程出现在列表中,当我关闭应用程序时,这些线程消失 httpX、AsyncTask#X、WebViewWorkerThread等不会在我关闭应用程序时消失。因此,我想知道在哪里可以

首先,我不会手动创建线程

我可以监控android应用程序的线程:

如何知道这些线程与哪些元素相关

例如,所有httpXX线程或AsyncTask#X,是否有方法知道它们在代码中的何处创建?因为他们每次都呆在那里,我害怕泄露记忆

相反,我有一个ImageCache,可以在线程中加载图像。当我在显示图像的视图中时,这些线程出现在列表中,当我关闭应用程序时,这些线程消失


httpX、AsyncTask#X、WebViewWorkerThread等不会在我关闭应用程序时消失。因此,我想知道在哪里可以释放内存、关闭连接等

这些线程是由内部依赖于线程池的Android类创建的。线程池的主要思想不是在每次需要执行某些操作时都创建一个新线程,而是重用已经启动的线程,并使它们保持运行,即使它们现在没有工作

例如,
AsyncTask#X
线程由内部
ThreadPoolExecutor
创建。如果查看其源代码,您会注意到以下ThreadFactory:

private static final ThreadFactory sThreadFactory = new ThreadFactory() {
    private final AtomicInteger mCount = new AtomicInteger(1);

    public Thread newThread(Runnable r) {
        return new Thread(r, "AsyncTask #" + mCount.getAndIncrement());
    }
};
WebViewCoreThread
WebViewWorkerThread
http0
-
http11
WebView
的内部工作线程,代表
WebView
执行有关通过网络加载html数据、处理等的所有操作

所以所有这些线程都是由Android系统管理的,你不需要对它们做任何事情。当你关闭应用程序时,它们不会消失也没关系