2012-07-10 54 views
0

首先,我不手动创建线程。如何知道我的android应用程序的某个线程与哪个元素相关?

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

我怎样才能知道哪些元素这些线程有关系吗?

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

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

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

回答

1

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

例如AsyncTask #X线程由AsyncTask内部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()); 
    } 
}; 

WebViewCoreThreadWebViewWorkerThread,并http0 - http11WebView内部工作线程,其执行在网络上,处理等有关加载HTML数据的所有操作代表WebView

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

相关问题