启动一个线程以保持活动内的连接处于活动状态。保持对活动的静态引用?

问题描述 投票:0回答:1

我的应用程序需要与服务器保持开放的连接。过去我基本上会在前台服务中运行一个线程。当然,在前台我从来没有遇到任何问题。 我从未尝试在活动中启动线程,因为我知道一旦活动进入后台并被垃圾收集,它就会被杀死。 然而,通过保持对我的活动的静态引用可以防止垃圾收集器清理它们,因此我的 ClientThread 可能会无限期地保持与服务器的连接打开?至少在用户使用设备之前(与即使屏幕锁定时仍会运行的前台服务相反)。 这不是一个很好的解决方案,但至少我可以避免使用服务,因为仅将其用于连接似乎毫无意义。

java android android-activity static client
1个回答
0
投票

但是,通过保留对我的活动的静态引用可以防止垃圾收集器清理它们,因此我的 ClientThread 可能会无限期地保持与服务器的连接打开状态?

您泄露的活动的线程将继续运行,直到您的进程终止。这可能会在您的 UI 移至后台后几毫秒内发生。

至少我可以避免使用服务,因为仅将其用于连接似乎毫无意义。

重点是让你的进程保持活动状态,直到设备无论如何都会杀死你

© www.soinside.com 2019 - 2024. All rights reserved.