0

我有每 10 秒向服务器(http 客户端)发出一些请求的应用程序。我阅读了很多关于应用程序生命周期的内容。我的应用程序具有带有前台标志的服务,并且当 android 处于“活动状态”时它运行良好(应用程序一直工作)。我没有真正的安卓手机,所以我在模拟器上进行测试,但我的朋友在智能手机上测试它,他注意到当他离开手机时,请求会发布 10、30 分钟,甚至一小时。如果他打开屏幕,那么请求时间会回到 10 秒(他可以访问服务器,所以他可以看到日志)。这是已知的行为吗?因为他从 google 安装了 gmail 通知程序,并且同样的问题(大延迟)。有什么解决办法吗?我的服务有定时器任务(所以请求是在异步任务中发送的)

问候

4

1 回答 1

1

首先,如果您每 10 秒轮询一次,那将消耗大量电池和网络带宽。

我建议使用较低频率或服务器推送。

对于投票问题,您如何实施投票?你使用计时器吗?如果是这样,你传递什么选项?还是您使用休眠 10 秒的线程?

根据版本的不同,Android 可能会关闭所有进程,或延迟网络请求以每 30 分钟运行一次,以节省电池电量和带宽。(启动网络组件比保持它们运行会消耗大量电池。因此,如果您的应用打开网络,请进行轮询,然后简单地将其关闭,Android 可能会安排它与系统上的所有其他请求保持一致。)

您能否向我们提供有关您如何进行投票的更多信息?

更新

您可能需要安排一个“WakeLock”,以便 android 知道何时为您的服务唤醒。我认为,默认情况下,android 不会为非常频繁地安排的计时器请求唤醒,它会按照我的解释安排它们。另一方面,WakeLocks 可以强制 android 唤醒。

请参阅此问题WakeLock 文档 确保您传递正确的参数,这样您就不会打开屏幕。(会很烦人。)

更新 我仍然建议为此使用服务器推送,这将节省电池和带宽,同时保持实时更新。

于 2012-08-07T22:53:40.380 回答