在应用程序具有前台时保持android服务处于活动状态

时间:2012-05-14 05:34:18

标签: android sockets service

我有一个维护与游戏服务器的套接字连接的服务。游戏需要经常与服务器进行双向通信,因此只要应用程序具有前台,此连接就应保持打开状态。但是,由于保持连接打开是电池密集型的,我们希望尽可能好,只要应用程序离开前台(即用户返回主屏幕),我们就会终止连接。

这一切都非常接近工作,但我们遇到了几个小小的烦恼。每当游戏改变活动(例如偏好活动)时,连接就会下降。现在我们可以让每个活动都删除onPause连接并启动对此负责的服务,但这似乎不太理想,因为它会导致不必要的丢弃和重新连接。将服务停止绑定到onStop方法似乎也不是最佳的,因为连接将在用户离开游戏后很长时间保持活动状态。

我们正在寻找的是一种在初始活动开始后不久就启动服务的方法,并且只要应用程序位于前台,就可以保持该服务的运行。一旦用户离开应用程序,服务就会关闭。

1 个答案:

答案 0 :(得分:1)

如果您只需要在应用程序位于前台时运行它(即显示其中一个活动),您就不需要服务。使您的连接管理器类成为单身,并计算使用它的活动数量,如下所述:https://groups.google.com/forum/#!msg/android-developers/yxOzuMGlcSo/yd-pkau0zzAJ

Android中的服务在您需要在没有UI的情况下运行时使用,因此不适合您的用例。