2011-06-13 99 views

回答

4

实施您的服务并使用ServerSocket类来侦听传入连接并对其执行操作。不过,不要在你的UI线程上调用ServerSocket.accept()。这会导致您的应用程序无法响应。相反,创建一个新的线程或根据您的实际情况,AsyncTask可能就足够了。

+0

@Steven Prentice你好。你的回答真的帮了我。我在'AsyncTask'中试过了,它失败了。然后我在一个单独的线程中尝试了它,它像魔术一样工作。我想知道为什么'ServerSocket'这样做。当然,它已经在UI线程中疲倦了,并且在那里也失败了。这是为什么 ?如果我不介意我的活动挂起,因为它的唯一目的是通过单击按钮来启动服务器,例如? – 2017-10-29 17:53:30

+0

@JasonKrs:它应该与AsyncTask一起工作,只要你在doInBackground()中执行ServerSocket业务。如果你可以在这里分享代码,那么我们可以帮助更多。就UI线程而言,这是Android提供的限制(可等待任务完成〜5秒),因为UI线程负责很多事情。从文档:系统不会为组件的每个实例创建单独的线程。在同一个进程中运行的所有组件都在UI线程中实例化,并且从该线程分派对每个组件的系统调用。 – 2018-01-05 05:32:34

+0

@UncaughtException在'doInBackground()'中的Ahhh ...我认为我可能没有这样工作......也许这就是为什么它失败了......无论如何,很多事情已经完成了对高级项目的处理,所以我不会重新编程该功能...我会继续努力与旧时尚主题。 ;-) – 2018-01-06 15:11:40