我正在开发一个有 2 个按钮的程序:开始和结束。当我单击开始时,它将开始每 30 秒获取一次位置。并使用套接字连接将它们发送到服务器。当我单击结束按钮时,它将停止所有工作。我可以在不使用线程的情况下做到这一点吗?如果我需要使用线程,那么实现它的最佳方法是什么。我应该使用 LocationListener 监听 LocationProvider 以每 30 秒获取一次位置并在线程中发送它们,还是应该创建连接线程并在每个线程中获取位置并发送。
问问题
284 次
3 回答
2
不幸的是,这是一个部分答案(我很难理解你的其余问题):
我可以在不使用线程的情况下做到这一点吗?
这是不可能的。如果您开始在主 UI 线程上执行此操作,那么您的应用程序 UI 将不得不等到一切都完成(网络是一项耗时的工作)。所以唯一的方法是在后台线程上执行此操作。
于 2011-10-04T11:31:46.313 回答
1
如果您在 UI 主线程中建立连接,您的应用程序将变得无响应,直到连接终止,这是错误的!!!您必须为您建立的每个连接创建一个线程,强烈建议这样做。
您将必须创建一个每次睡眠 30 秒的线程,然后执行您所说的工作。
你的工作应该在线程中完成,不要将主线程用于这些事情
于 2011-10-04T11:45:24.280 回答
0
您必须使用除主 UI 线程 (EDT) 之外的另一个线程来进行网络事务。您不能将主线程用于网络事务,因为这是一个耗时的操作,会使主线程无响应并且您的应用程序最终会崩溃。
于 2013-09-16T05:41:01.227 回答