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

Android ServerSocket服务-它应该在单独的线程中吗?,android,sockets,Android,Sockets,我正在编写一个使用sockets的简单应用程序。我有一个活动,在按下按钮后启动服务;简而言之,此服务中的onStart执行以下操作: ss=new ServerSocket(portNum); Socket socket=ss.accept(); //some other unrelated stuff 我认为服务可以独立于活动在后台运行(我是android新手,事实上,这是我的第一个应用),但我的活动会冻结,直到ss.accept()完成(我的意思是,直到客户端连接-按钮保持按下状态,我什么

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

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

我认为服务可以独立于活动在后台运行(我是android新手,事实上,这是我的第一个应用),但我的活动会冻结,直到
ss.accept()
完成(我的意思是,直到客户端连接-按钮保持按下状态,我什么也做不了)。这种行为是正常的还是应该在代码中查找错误?或者将这段代码放在一个单独的线程中?

默认情况下,Android本地服务使用相同的UI线程。这就是你的活动冻结的原因。您应该创建服务,在此服务中创建一个线程,并在另一个线程中运行您的命令。

非常感谢:)尽管他们这样做有点奇怪。