【问题标题】:Blackberry socket connection and threads黑莓套接字连接和线程
【发布时间】:2011-10-04 08:23:40
【问题描述】:
我正在开发一个有 2 个按钮的程序:开始和结束。当我单击开始时,它将开始每 30 秒获取一次位置。并使用套接字连接将它们发送到服务器。当我单击结束按钮时,它将停止所有工作。
我可以在不使用线程的情况下做到这一点吗?如果我需要使用线程,那么实现它的最佳方法是什么。我应该使用 LocationListener 监听 LocationProvider 以每 30 秒获取一次位置并在线程中发送它们,还是应该创建连接线程并在每个线程中获取位置并发送。
【问题讨论】:
标签:
multithreading
sockets
blackberry
location-provider
【解决方案1】:
不幸的是,这是部分答案(我很难理解您的其余问题):
我可以不使用线程来做到这一点吗?
这是不可能的。如果您开始在主 UI 线程上执行此操作,那么您的应用程序 UI 将不得不等到一切都完成(网络是一项耗时的工作)。所以唯一的方法是在后台线程上执行此操作。
【解决方案2】:
如果您在 UI 主线程中建立连接,您的应用程序将变得无响应,直到连接终止,这是错误的!!!您必须为建立的每个连接创建一个线程,强烈建议这样做。
你必须创建一个每次休眠 30 秒的线程,然后执行你所说的工作。
你的工作应该在线程中完成,不要使用主线程来做这些事情
【解决方案3】:
您必须使用除主 UI 线程 (EDT) 之外的另一个线程来进行网络事务。
您不能将主线程用于网络事务,因为这是一个耗时的操作,会使主线程无响应并且您的应用程序最终会崩溃。