0

我想用 WifiDirect 传输数据。

所以我用它连接了两台设备,并在一台设备上打开了一个 SeverSocket。当我想通过单击活动中的按钮从其他设备连接到此 ServerSocket 时(我打开一个带有组所有者 IP 的套接字,服务器)我得到:“无法打开套接字连接”。

当我打开 IntentService 并在那里执行代码而不是在活动中执行 buttenClicked 方法中的代码时,它可以完美运行。

为什么不能在 Activity 中打开 Socket,而在 IntentService 中?

4

1 回答 1

1

Android不允许您在ui线程上运行长时间运行的任务..您的按钮单击在ui线程上运行,而意图服务在单独的线程上运行,因此serversocket可以等到客户端连接但在ui线程上它无法运行。

因此,对于未来的应用程序,每当您有可能长时间暂停线程的任务时,请使用 intentservice 或 asynctask 或 java 的普通线程类在不同的线程上执行

于 2013-06-20T17:15:50.650 回答