簡體   English   中英

java android java.net.SocketTimeoutException

[英]java android java.net.SocketTimeoutException

有時在這里我有一個java.net.SocketTimeoutException

   while ((bytesRead = inputStream.read(content)) != -1) {
                            baos.write(content, 0, bytesRead);
                            str = baos.toString("UTF-8");
                            System.out.println(str);
                            requestSocket.setSoTimeout(8000);
                            break;
                        }

在這一行:

 while ((bytesRead = inputStream.read(content)) != -1)

由於設置了8秒鍾的讀取超時,並且對等方花費了8秒鍾以上的時間來發送數據,因此您獲得了讀取超時。 如果您不想這樣做,請增加讀取超時。 如果確實需要,請修復同級。

您的代碼沒有多大意義。 您正在循環內設置讀取超時,這毫無意義,並且在一次讀取后也將中斷。

手機休眠時會發生嗎?

幾個月前,我遇到了類似的問題,該問題與“打ze”功能有關。

https://developer.android.com/training/monitoring-device-state/doze-standby.html

當設備長時間不使用時,Doze通過延遲應用程序的后台CPU和網絡活動來減少電池消耗。 App Standby推遲了用戶最近未與之交互的應用程序的后台網絡活動。

自Android> 6.X起已添加

https://android-developers.googleblog.com/2015/10/how-google-cloud-messaging-handles-doze.html

Android 6.0棉花糖引入了一項名為“打power”的新節能功能。 當用戶在一段時間內將其拔下電源並保持靜止且屏幕關閉時,設備進入“打ze”狀態。 發生這種情況時,系統會推遲應用程序活動以節省電量。 為了執行應用程序同步和其他未完成的操作,它將定期且短暫地恢復正常操作(稱為空閑維護窗口)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM