Я создаю приложение для Android, которое должно выполнять определенные сетевые вызовы в ответ на события пользовательского интерфейса. Однако я изо всех сил пытаюсь найти элегантный способ отправки этих вызовов из обратного вызова пользовательского интерфейса. AsyncTask не очень подходит, потому что все, что я хочу сделать, это просто отправить вызов - любые ответы будут обрабатываться обратными вызовами в моем коде получателя. Аналогично, создание нового потока только для выполнения одного сетевого вызова кажется расточительным и плохой практикой, особенно учитывая, что в определенных случаях будет много, много вызовов в секунду, когда пользователь взаимодействует с пользовательским интерфейсом.
Примечание: под "сетевым вызовом" я на самом деле имею в виду отправку нескольких байтов через UDP DatagramSocket
Я думал о том, чтобы сетевой поток TX с «очередью отправки» непрерывно зацикливался, чтобы поток пользовательского интерфейса мог отправлять сообщения, но это казалось бы невероятной тратой циклов ЦП во времена, когда между вызовами может потребоваться несколько секунд будет сделано.
У меня такое ощущение, что элегантное решение представляет собой комбинацию вышеупомянутой идеи "зацикливания потока TX", но с объектами блокировки, поэтому оно не зацикливается, если нет новых данных для отправки - но я не очень разбираюсь в параллелизме , замки и тому подобное, так что я надеюсь, что кто-то здесь может указать мне правильное направление. Любая помощь будет принята с благодарностью. Заранее спасибо:)