Android WifiDirect在活动中打开套接字连接

Android WifiDirect在活动中打开套接字连接,android,wifi-direct,Android,Wifi Direct,我想用WifiDirect传输数据 所以我用它连接了两台设备,并在一台设备上打开了一个服务器插座。 当我想通过单击活动中的按钮从其他设备连接到此ServerSocket时(在那里我打开了一个具有组所有者(服务器)ip的套接字),我得到:“无法打开套接字连接” 当我打开一个IntentService并在那里执行代码,而不是在活动中的buttenClicked方法中执行代码时,它工作得非常好 为什么不能在活动中打开套接字,而在IntentService中打开呢?Android不允许您在ui线程上运行

我想用WifiDirect传输数据

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

当我打开一个IntentService并在那里执行代码,而不是在活动中的buttenClicked方法中执行代码时,它工作得非常好


为什么不能在活动中打开套接字,而在IntentService中打开呢?

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

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