我有一个带有后台线程的 android 应用程序,该线程包含用于从服务器发送/接收数据的套接字连接。
如果我的应用程序结束(后退按钮等)或暂停(主页按钮、调用其他应用程序),处理此后台线程的最佳方式是什么?
我见过两种方式:
在线程创建之后和启动线程之前调用
Thread.setDaemon(true)
覆盖
onStop()
、onPause()
或onDestroy()
我只想确保我的应用程序不会挂起或有其他奇怪的行为。
编辑:
此外,关闭套接字的最佳解决方案是什么?我是否也关闭它和 inputStream?够了吗?
最佳答案
我建议使用某种信号变量:做类似的事情
public void run(){
while(!stopped){
// do work
}
// clean up
return;
}
然后在 onStop()
或 onDestroy()
中将 stopped 设置为 true。您需要确保自己也进行了清理,如果需要重新启动线程,您可以在 onResume
或 onCreate
中进行。
关于java - Android,退出/暂停应用程序,如何销毁线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5968141/