安卓线程问题

标签 android multithreading

我已经知道如何停止线程,但我现在的场景有些不同,我在线程中监听来自服务器的数据

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/

相关文章:

android - 获取安卓:versionName with shell command

multithreading - 在Logback中记录并行线程

android - 在 Android 中解压文件时手机挂起

android - 如何在 android studio 中检索签名 APK 的 key 别名和 key 密码(从 Eclipse 迁移)

android - 如何在 Lollipop 之前的 Android 版本中更改工具栏的标题颜色

android - 使用线性加速度和时间传递来获得行进距离 - android

java - "In a distributed environment, one does not use multithreding"- 为什么?

android - 工具栏选项菜单背景颜色

c# - 从全局X关闭按钮调用viewModel中定义的方法

.net - 在.NET 中内置后台调度系统?