1

对于我认为常见的情况,我得到了多种解决方案。不幸的是,似乎没有一个按预期工作。

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

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

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

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

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

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

    • 问题 - 基于我在屏幕上显示的显示服务状态的祝酒词,这按预期工作。问题是用户在服务关闭时会收到通知。显然我的祝酒词具有误导性。

任何帮助是极大的赞赏。示例代码不是必需的,但如果解决方案比上述概念更复杂,我们将不胜感激。

谢谢你。

4

1 回答 1

1

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

于 2012-07-23T21:42:02.437 回答