アクティビティから開始されるサービスでソケットを作成します。ソケットは私のサーバーに接続し、定期的ではないメッセージを待っています。メッセージを書き込むと送信されます。最初にサービスを開始したときにメッセージは正常に受信されますが、画面が空白になると、IOExceptionはInputStream.readLine()のために消えてしまいます。プロセスはまだ実行されており、この状況が発生した場合でも実行を継続します。これは正常な動作ですか?私はソケットが死ぬ前に少なくとも20分30秒かかると思っていました。数秒ではありません。あなたは、画面が消えた後も利用可能なネットワークを維持するためにWifiLock
を得ることがWifiManager
(http://developer.android.com/reference/android/net/wifi/WifiManager.html)を使用することができます画面が空になった後、Androidソケットが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