このスレッドでサービスを実行するAndroid3.1タブレットアプリケーションを開発しています。
public class UDPServerThread extends Thread
{
[ ... ]
public void run()
{
while (!end)
{
try
{
byte[] buf = new byte[MESSAGE_SIZE];
// Wait an incoming message.
DatagramPacket packet = new DatagramPacket(buf, buf.length);
socket.receive(packet);
// TODO: Notify Service with packet received
Message msg = new Message();
msg.obj = packet;
mServiceHandler.sendMessage(msg);
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
public void stopServer()
{
Log.v("UDPServerThread", "stopServer");
if (socket != null)
socket.close();
end = true;
}
}
サービスからメソッドを呼び出すとstopServer()
、次のエラーが発生します。
java.net.SocketException: Interrupted system call
オンのときにこのスレッドを停止する正しい方法はどれsocket.receive(packet);
ですか?