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政策:
- https://code.google.com/p/android/issues/detail?id=9781
- https://code.google.com/p/android/issues/detail?id=6611
但是,爲什麼平時間是這樣的?即使在屏幕上?我知道屏幕熄滅時CPU時鐘會減少,即使您持有喚醒鎖。這會導致處理TCP連接的服務代碼中出現問題嗎?
但這並不回答我爲什麼會發生這種情況的問題?由於CPU頻率的變化? (或者有其他原因)。 CPU頻率是否會導致服務器代碼無法正常工作? – gst
不,CPU頻率不應導致本地服務器代碼無法正常工作。再次,我認爲這主要是電池保護優化問題。例如,在打開屏幕時降低CPU時鐘的情況下,我相信這是用於屏幕的電池電量,它將從CPU中轉移出去。 –
如果是因爲節省電池,爲什麼即使在HTC和索尼設備中打開屏幕,ping時間也總是很糟糕? Ping是一個IO綁定的活動,並且不會佔用CPU,但即使在Xperia和HTC設備上屏幕始終處於ping時間時,它也非常高!這很奇怪。這可能是由於Wifi假脫機模式,但在正常情況下以及打開屏幕時此模式不應啓用。無論如何謝謝你的迴應。 – gst