我有一项服务正在维护与游戏服务器的套接字连接。游戏需要经常与服务器进行双向通信,因此只要应用程序有前台,此连接就应该保持打开状态。然而,由于保持连接打开是电池密集型的,我们希望尽可能好,一旦应用程序离开前台(即用户返回主屏幕),我们就会终止连接。
这一切都非常接近工作,但我们遇到了一些小烦恼。每当游戏更改活动(例如偏好活动)时,连接就会断开。现在我们可以让每个活动在暂停时断开连接并启动负责此操作的服务,但这似乎不太理想,因为它会导致不必要的断开和重新连接。将服务停止绑定到 onStop 方法似乎也不太理想,因为在用户离开游戏后连接将保持很长时间。
我们正在寻找的是一种在初始活动开始后不久启动服务并在应用程序处于前台时保持该服务运行的方法。一旦用户离开应用程序,服务就会关闭。