Android,退出/暂停应用程序,如何销毁线程
问题描述:
我有一个后台线程的android应用程序,其中包含用于从服务器发送/接收数据的套接字连接。Android,退出/暂停应用程序,如何销毁线程
如果我的应用程序结束(后退按钮等)或暂停(主页按钮,调用其他应用程序),处理此后台线程的最佳方式是什么?
我看到2种方式:创建后,启动线程
覆盖onStop()
,onPause()
,或onDestroy()
之前,我只是想确保
-
呼叫
Thread.setDaemon(true)
我的应用程序不会挂起或有其他奇怪的行为。编辑:
另外,什么是关闭套接字的最佳解决方案?我是否也关闭它并使用inputStream?够了吗?
答
我建议使用某种类型的信号变量:做这样的事情
public void run(){
while(!stopped){
// do work
}
// clean up
return;
}
然后在onStop()
或onDestroy()
组停下来真的。你还需要确保你清理自己身后,如果你需要重新启动线程,你可以在onResume
或onCreate
中这样做。
线程并不总是在背景上工作..它最终被调用,然后完成他的工作直到完成... 如果在某些工作中间发生某些事情时发生了问题,我需要清理它...因为线程可以访问套接字连接,所以我认为在不结束此套接字的情况下线程不能被中断。 虽然不知道最好的方法.. – cornelyus 2011-05-20 17:06:09
是的,如果过程完全被杀死,那么你有点不幸。我不确定过程kill是否调用任何生命周期方法,但是在将'stopped'设置为true后,可以在Thread对象上放置一个'join',然后用'finally'子句关闭所有套接字工作提供套接字并执行所需的其他清理工作。 – Femi 2011-05-20 17:14:08
嘿Femi ..关心发展呢?可能有些编码,请问? – cornelyus 2011-06-15 16:57:10