我有一个应用程序,它创建一个线程来完成一些工作。工作完成后我杀了线程。问题是,每次我杀死线程,堆似乎增加了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");
}
}
知道为什么会这样吗?
答案 0 :(得分:1)
不推荐使用myThread.stop()方法,因为它可能会将应用程序保留在 不可预测的状态。相反,在需要时使用以下内容,例如onStop() 父组件的方法:
//use to stop the thread myThread
if(myThread != null) {
Thread dummy = myThread;
myThread = null;
dummy.interrupt();
}
答案 1 :(得分:0)