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

发布于 2024-11-06 17:49:27 字数 403 浏览 1 评论 0原文

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

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

我看到了两种方法:

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

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

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

编辑:

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

I have an android application with a background thread that contains a socket connection for sending/receiving data from a server.

If my application ends (back button, etc) or is paused (Home button, calling other app), what is the best way of dealing with this background thread?

I have seen 2 ways:

  • Call Thread.setDaemon(true) after creation and before starting the thread

  • Override onStop(), onPause(), or onDestroy()

I just want to ensure that my application doesn't hang or have other strange behavior.

edit:

Also, what's the best solution to close the socket? Do I close it and the inputStream as well? Is that enough?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

自由如风 2024-11-13 17:49:27

我建议使用某种信号变量:执行类似的操作

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

// clean up

return;
}

,然后在 onStop()onDestroy() 将 stop 设置为 true。您还需要确保自己清理干净,如果需要重新启动线程,请在 onResumeonCreate 中执行此操作。

I'd suggest using a signal variable of some sort: doing something like

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

// clean up

return;
}

And then in onStop() or onDestroy() set stopped to true. You'll need to make sure you clean up behind yourself as well, and if you need to re-start the thread you do so in onResume or onCreate.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文