我已经知道如何停止线程,但我现在的场景有些不同,我在线程中监听来自服务器的数据
while (connected)
{
byte[] buffer = new byte[1024];
if(in.read(buffer) > 0)// waits on this line
{
//do something
}
}
现在的问题是,虽然我设置了 connected = false;然后它也没有停止,因为它等待 in.read 所以,我也尝试了 Thread.interrupt 但没有运气
最佳答案
您可能应该改用 SelectableChannel
方法来读取/写入使用非阻塞 I/O 的套接字,并且您可以通过监听“事件”来管理多个连接。然后,您可以避免在 read()
等调用中被阻塞。
不幸的是,这与您当前使用的模型完全不同,因此转换不会很快或很容易,但值得付出努力。
查看这些资源:
http://developer.android.com/reference/java/nio/channels/SocketChannel.html http://www.exampledepot.com/egs/java.nio/NbClientSocket.html
关于安卓线程问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4896705/