0

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

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

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

例如所有 httpXX 线程或 AsyncTask #X ,有没有办法知道它们在代码中的创建位置?因为他们每次都呆在那里,我害怕泄露内存。

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

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

4

1 回答 1

1

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

例如AsyncTask #X线程是由AsyncTask internal创建的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.

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

于 2012-07-15T23:32:15.253 回答