我正在编写一个使用套接字
的简单应用程序。我有一个在按下按钮后启动服务的 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/