在Android中创建和杀死线程

时间:2012-02-23 11:55:04

标签: android

我有一个应用程序,它创建一个线程来完成一些工作。工作完成后我杀了线程。问题是,每次我杀死线程,堆似乎增加了10k?为了进一步测试,我在1ms处理程序中执行了以下操作。

TestThread new_thread = new TestThread();
new_thread = null;

每次运行此操作时,我都会看到DDMS下的堆增加。 TestThread什么都不做。它没有代码。它只是一个空洞的线程。

import android.util.Log;

public class TestThread extends Thread {

    public TestThread () {
    Log.d("TESTTHREAD","Constructed");
    }

    public void run() {
        Log.d("TESTHREAD","Run");
    }
}

知道为什么会这样吗?

2 个答案:

答案 0 :(得分:1)

不推荐使用myThread.stop()方法,因为它可能会将应用程序保留在 不可预测的状态。相反,在需要时使用以下内容,例如onStop() 父组件的方法:

//use to stop the thread myThread 
if(myThread != null) { 
    Thread dummy = myThread; 
   myThread = null; 
    dummy.interrupt(); 
} 

答案 1 :(得分:0)

是的,似乎这个链接显示了问题所在。

out of memory in thread repeatition?

恢复原状。

崔佛