我想用WifiDirect传输数据。
所以我用它连接了两个设备,并在一台设备上打开了一个SeverSocket。 当我想通过单击活动中的按钮(我用组所有者的ip,服务器打开一个套接字)从其他设备连接到此ServerSocket时,我得到:“无法打开套接字连接”。
当我打开一个IntentService并在那里执行代码而不是在活动中的buttenClicked方法中执行代码时,它可以很好地工作。
为什么不能在Activity中打开Socket,而在IntentService中打开?
答案 0 :(得分:1)
Android不允许你在ui线程上运行长时间运行的任务..你的按钮点击在ui线程上运行,而意图服务在一个单独的线程上运行,所以serversocket可以等到客户端连接但是在ui线程无法运行。
因此,对于未来的应用程序,只要你有一个可能长时间停止线程的任务,就可以使用intentservice或asynctask或java的普通线程类在不同的线程上执行它