我正在编写一个使用sockets
的简单应用程序。我有一个按钮按下后启动服务的活动;简而言之,此服务中的onStart
执行以下操作:
ss=new ServerSocket(portNum);
Socket socket=ss.accept();
//some other unrelated stuff
我虽然服务可以在后台独立于活动中运行(我是Android的新手,事实上,这是我的第一个应用程序),但我的活动冻结直到ss.accept()
完成(我的意思是,直到客户端连接 - 按钮保持按下状态,我无法做任何事情)。这种行为是正常的还是我应该在我的代码中找到某个错误?或者也许把这段代码放在一个单独的线程中?
答案 0 :(得分:2)
默认情况下,在Android本地服务中使用相同的UI线程。这就是你的活动冻结的原因。您应该创建服务,在此服务中创建一个线程并在另一个线程中运行您的命令。