그래서 Activity에서 시작된 서비스에서 소켓을 만듭니다. 소켓은 내 서버에 연결하여 정기 간행물이 아닌 메시지를 기다립니다. 메시지를 쓸 때 메시지가 전송됩니다. 서비스가 시작될 때 메시지가 먼저 수신되지만 혼자 전화를두고 메시지를 보내지 않으면 메시지가 제대로 전송됩니다. 화면이 공백이되면 InputStream.readLine()에 대해 IO 예외가 발생하여 소켓이 죽은 것입니다. 이 프로세스는 여전히 실행 중이며 이런 일이 발생하면 계속 실행됩니다. 이것은 정상적인 행동입니까? 소켓이 죽기 전에 최소한 20, 30 분이 걸릴 거라 생각했는데 몇 초가 아니야.화면이 공백이 된 후 안드로이드 소켓이 imidiatelly로 죽습니다.
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");
}
고마워요.하지만 잠자기를 피하려고 했어요. 안드로이드가 화면이 공백이 될 때 메시지가 몇 초 이상 열리는 것을 기다리고있는 소켓을 유지할 방법은 없습니까? 프로세스가 실행 중일 때 프로세스에서 생성 된 소켓을 죽이는 이유는 무엇입니까? – user1154267
왜 스택 추적을 로깅하지 않습니까? – Brigham