android - ServerSocket 的服务 - 它应该在一个单独的线程中吗?

标签 android sockets

我正在编写一个使用套接字 的简单应用程序。我有一个在按下按钮后启动服务的 Activity ;简而言之,此服务中的 onStart 执行如下操作:

ss=new ServerSocket(portNum);
Socket socket=ss.accept();
//some other unrelated stuff

虽然服务可以独立于 Activity 在后台运行(我是 android 的新手,事实上,这是我的第一个应用程序),但我的 Activity 卡住直到 ss.accept()完成(我的意思是,直到客户端连接 - 按钮保持按下状态,我无法做任何事情)。这种行为是正常的还是我应该在我的代码中的某处寻找错误?或者将这段代码放在一个单独的线程中?

最佳答案

默认情况下,Android 中的本地服务使用相同的 UI 线程。这就是您的 Activity 卡住的原因。您应该创建服务,在此服务中创建一个线程,然后在另一个线程中运行您的命令。

关于android - ServerSocket 的服务 - 它应该在一个单独的线程中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8939300/

相关文章:

c - 关于 setsockopt() 和 getsockopt() 函数

android - 如何使用 adb pull 从 Android 复制选定的文件

android - 获取 MediaPlayer 的状态

java - Android 在将图像上传到 Web 服务器时抛出空点异常

java - 多个 ServerSocket、多个设备并发送到多个套接字

java - 如何使用 python 通过套接字将整数发送到 Java 应用程序?

android - 在按下和释放时更改 ImageButton 的图像

java - Firebase 设置-错误 : Failed to resolve: com. google.firebase :firebase-core:12. 0.1

c# - 适用于 Windows 和 Linux 的同一台机器上的套接字

c - 套接字 recv() 卡在带有 MSG_WAITALL 的大消息上