Android服务未按预期启动/停止

时间:2012-07-23 21:04:17

标签: android android-service android-notifications

我已经获得了多种解决方案,我认为这是一种常见的情况。不幸的是,似乎都没有按预期工作。

我创建了一个非常简单的安卓游戏。用户可以邀请朋友玩游戏,并且在游戏生命周期中他们会进行一些活动。所有转弯和数据都存储在远程服务器中,该服务器通过Web服务公开数据。每次发送邀请或对手完成转弯时,都会通过该服务提示用户轮到他们。

该服务提示用户使用标准的Android通知告诉他们轮到他们了。我不希望该服务在用户查看游戏时轮询Web服务或显示通知(他们已经知道它是否在那里转动)。

我尝试了以下解决方案但没有取得任何成功。

  1. 在主要活动的onPause方法中启动服务,并在主要活动的onResume方法中停止服务。

    • 问题 - 每次用户离开活动时,服务都会启动。用户可能正在撰写内容或创建邀请,并提示他们轮流使用。
  2. 将每个活动绑定到服务,并在所有活动的相同onPause / onResume方法中设置一个布尔(运行)标志。

    • 问题 - 这似乎是合乎逻辑的,但由于某种原因,服务从不提供通知。这可能是用户错误,但我不确定这是否是正确的解决方案。
  3. 在所有活动的onPause方法中启动服务,并在所有活动的onResume方法中停止服务。

    • 问题 - 基于我在屏幕上呈现的祝酒词,显示服务的状态,按预期工作。问题是在服务关闭时向用户显示通知。显然,我的祝酒词有误导性。
  4. 非常感谢任何帮助。示例代码不是必需的,但如果解决方案比上述概念更复杂,将不胜感激。

    谢谢。

1 个答案:

答案 0 :(得分:1)

请勿使用服务,使用Google Cloud Messaging并在广播的接收方中检查游戏状态,然后决定是否显示通知。轮询通常很糟糕,不必要地使用数据和电池。