所以我在我的Service中創建一個Socket,它是從一個Activity開始的。套接字連接到我的服務器並等待那些不是週期性的消息,當我寫入時它們會被髮送。當服務啓動時,首先收到的消息正常,但是在我離開電話並且不發送任何消息之後,當屏幕變爲空白時,InputStream.readLine()意味着套接字死了,我認爲IO異常關閉。該過程仍在運行,並在發生這種情況時繼續運行。這是正常的行爲嗎?我認爲在Socket死亡之前至少需要20,30分鐘,而不是幾秒鐘。Android套接字在屏幕變空白後被imidimidelly殺死
Socket mSocket=new Socket(InetAddress.getByName("192.168.1.104"),4444);
BufferedReader in=new BufferedReader(new InputStreamReader(mSocket.getInputStream()));
String message;
try {
while((message=in.readLine())!=null){
notify(message);
}
} catch (IOException e) {
notify("socket dead");
}
謝謝你,但我希望避免喚醒鎖。有沒有辦法android會保持一個插座,等待消息打開超過幾秒鐘,當屏幕變空白。我的意思是這個進程正在運行,爲什麼它會盡快殺死在這個進程中創建的Socket? – user1154267 2012-01-17 16:22:13
爲什麼不記錄堆棧跟蹤? – Brigham 2012-01-17 19:25:26