2013-07-08 67 views
1

我有三个android设备,三星Galaxy Note 10 HTC Desire C和索尼Xperia E.以及我有一个服务,在这些设备上的特定TCP端口上侦听。我的所有设备的WIFI策略都设置为“始终打开”,我的服务也获得了WIFI_MODE_FULL和PARTIAL_WAKE_LOCK,因此CPU和WIFI总是在那里。经过一段时间,当我想从服务器连接到这些设备时,发生了一些不好的事情。Android奇怪的跨设备行为

  • Samsung Galaxy Note设备的行为正常。
  • HTC欲望变得不可访问
  • 索尼装置也可达

我Ping探测这些设备以查看它们是否是有或没有。结果是:

  • 三星设备总是立即正常响应ping请求。
  • 宏达电和索尼设备在一段时间内无法访问,有时它们会作出响应,但即使其屏幕处于开启状态(ping的时间列有时大约为5000毫秒)也会有很长的延迟。

我知道有一些问题与WIFI政策:

但是,为什么平时间是这样的?即使在屏幕上?我知道屏幕熄灭时CPU时钟会减少,即使您持有唤醒锁。这会导致处理TCP连接的服务代码中出现问题吗?

回答

1

制造商希望能够吹嘘有最长的电池寿命。为此,他们会将现有的功能发挥到极致,以延长电池续航时间。

是的,它可能会导致问题,它确实会导致问题,但这是你应该防守编程的许多原因之一。换句话说,请确保您的应用程序已准备好处理丢弃的数据包和可能更长的延迟。

希望你的问题不是完全修辞,而是你真的想要一个答案。

+0

但这并不回答我为什么会发生这种情况的问题?由于CPU频率的变化? (或者有其他原因)。 CPU频率是否会导致服务器代码无法正常工作? – gst

+0

不,CPU频率不应导致本地服务器代码无法正常工作。再次,我认为这主要是电池保护优化问题。例如,在打开屏幕时降低CPU时钟的情况下,我相信这是用于屏幕的电池电量,它将从CPU中转移出去。 –

+0

如果是因为节省电池,为什么即使在HTC和索尼设备中打开屏幕,ping时间也总是很糟糕? Ping是一个IO绑定的活动,并且不会占用CPU,但即使在Xperia和HTC设备上屏幕始终处于ping时间时,它也非常高!这很奇怪。这可能是由于Wifi假脱机模式,但在正常情况下以及打开屏幕时此模式不应启用。无论如何谢谢你的回应。 – gst