我在活动中创建了一个线程。起初,我认为在Activity上调用onDestroy()
时,线程也会被终止。但是我错了。线程仍然继续运行。我应该何时取消/杀死一个线程?
所以我决定取消onDestroy()
方法中的线程。一切正常。
但是有1个问题:onDestroy()
不保证被调用。例如:Activity被操作系统突然中止。
那么在这种情况下最好的做法是什么?谢谢。
我在活动中创建了一个线程。起初,我认为在Activity上调用onDestroy()
时,线程也会被终止。但是我错了。线程仍然继续运行。我应该何时取消/杀死一个线程?
所以我决定取消onDestroy()
方法中的线程。一切正常。
但是有1个问题:onDestroy()
不保证被调用。例如:Activity被操作系统突然中止。
那么在这种情况下最好的做法是什么?谢谢。
你应该做一切有关清理onPause()。你是正确的,onDestroy()不会总是被调用,但onPause()总是被调用时,活动移动到后台或被杀害。但要小心使这个方法中的代码真的很轻量级,因为在这个方法返回之前,一个活动不能进入后台。
我提议把Thread
杀害Application
onTerminate
方法
public class MyApplication extends Application
{
MyThread myThread;
@Override
public void onCreate()
{
super.onCreate();
myThread=new MyThread();
myThread.start();
}
@Override
public void onTerminate()
{
super.onTerminate();
myThread.interrupt();
}
}
确保在AndroidManifest.xml
我也想过它宣布所有MyApplication,但如果)活动的的onPause(简称只是因为在它上面还有另一个Activity,如果线程正在下载某些内容,取消该线程是没有意义的。 – namanhams 2011-06-04 08:18:09
你什么时候需要准确地停止线程?如果您希望下载在您的活动从屏幕上消失后继续运行,您可能需要在服务中下载内容。如果你正在做一些后台任务,你不应该依赖活动状态。 – Malcolm 2011-06-04 11:51:00