#multithreading #sockets #blackberry #location-provider
#многопоточность #сокеты #ежевика #местоположение-поставщик
Вопрос:
Я разрабатываю программу, в которой есть 2 кнопки: Start и End. Когда я нажму кнопку «Пуск», он начнет получать местоположения каждые 30 секунд. и отправлять их на сервер, используя соединение с сокетами. Когда я нажимаю кнопку завершения, все работы прекращаются. Могу ли я сделать это без использования thread? Если мне нужно использовать потоки, каков наилучший способ его реализации. Должен ли я прослушивать LocationProvider с помощью LocationListener, чтобы получать местоположения каждые 30 секунд и отправлять их в потоке, или я должен создать поток подключения и получать местоположение в каждом и отправлять.
Ответ №1:
К сожалению, это частичный ответ (мне трудно понять остальную часть вашего вопроса):
Могу ли я сделать это без использования thread?
Это невозможно. Если вы начнете делать это в основном потоке пользовательского интерфейса, то пользовательскому интерфейсу вашего приложения придется подождать, пока все не будет сделано (подключение к сети требует много времени).). Таким образом, единственный способ — сделать это в фоновом потоке.
Ответ №2:
Если вы создадите соединение в главном потоке пользовательского интерфейса, ваше приложение перестанет отвечать, пока соединение не будет прервано, что неправильно!!! Вы должны создавать поток для каждого устанавливаемого вами соединения, это настоятельно рекомендуется.
Вам нужно будет создать поток, который будет находиться в режиме ожидания в течение 30 секунд каждый раз, а затем выполнять работу, о которой вы сказали.
Ваша работа должна выполняться в потоках, не используйте для этого основной поток
Ответ №3:
Для сетевых транзакций необходимо использовать другой поток, помимо основного потока пользовательского интерфейса (EDT). Вы не можете использовать основной поток для сетевых транзакций, потому что это трудоемкое действие, из-за которого основной поток перестанет отвечать на запросы, и ваше приложение в конечном итоге завершится сбоем.