java - Android,退出/暂停应用程序,如何销毁线程

标签 java android multithreading sockets

我有一个带有后台线程的 android 应用程序,该线程包含用于从服务器发送/接收数据的套接字连接。

如果我的应用程序结束(后退按钮等)或暂停(主页按钮、调用其他应用程序),处理此后台线程的最佳方式是什么?

我见过两种方式:

  • 在线程创建之后和启动线程之前调用Thread.setDaemon(true)

  • 覆盖 onStop()onPause()onDestroy()

我只想确保我的应用程序不会挂起或有其他奇怪的行为。

编辑:

此外,关闭套接字的最佳解决方案是什么?我是否也关闭它和 inputStream?够了吗?

最佳答案

我建议使用某种信号变量:做类似的事情

public void run(){
while(!stopped){
  // do work
}

// clean up

return;
}

然后在 onStop()onDestroy() 中将 stopped 设置为 true。您需要确保自己也进行了清理,如果需要重新启动线程,您可以在 onResumeonCreate 中进行。

关于java - Android,退出/暂停应用程序,如何销毁线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5968141/

相关文章:

c++ - 在 C++ 中计算一次后跨多个线程共享只读数据

java - 如何使用 org.scribe.oauth 连接到 tumblr API?

java - 准确查明错误和异常的最佳方法是什么?

java - 电话经理的值(value)观是否可靠且多变(cdma)?

C++ 流对象线程安全吗?

java - Android:蓝牙监听线程正在阻塞 UI 线程

java - 如何以线程安全的方式使用 CXF 客户端

java - 是否有更高效的 Java 8 Stream 方法来查找 int[] 中的索引?

java - 循环动画可绘制

android - 构造函数中注入(inject)次数的 lint 规则