#java #android #multithreading
#java #Android #многопоточность
Вопрос:
На Android (Java) у меня возникли концептуальные проблемы с наилучшим способом предоставления следующего. У меня есть поток, который запрашивает пакеты из интерфейса, считывая их по мере их доступности. Затем у меня есть набор потоков, которые должны работать с каждым пакетом по мере их поступления (разные потоки выполняют разные операции).
Я представляю, что поток должен иметь возможность «подписываться» на пакетные данные в основном потоке и получать копию каждого пакета по мере его поступления. Я не возражаю (и мог бы предпочесть), если данные будут скопированы в каждый из «подписанных» потоков. Таким образом, мне не нужно беспокоиться о том, что потоки синхронизируют какую-то очистку общих данных.
Лучший ли способ сделать это, чтобы основной поток поддерживал список функций обратного вызова и выполнял их в каждом пакете? Но, если это так, как мне обеспечить выполнение функций в «подчиненных» потоках? Есть ли другой / лучший способ сделать это, о котором кто-нибудь может подумать?
Ответ №1:
Хорошим решением может быть регистрация широковещательных приемников для событий, которые вы заинтересованы в передаче, а затем при необходимости передать намерения процессора исходных пакетов данных. Взгляните на http://justanapplication.wordpress.com подробную серию сообщений (8 и более) о намерениях, а также следующие две страницы из руководства по разработке.
http://developer.android.com/guide/topics/fundamentals.html
http://developer.android.com/guide/topics/intents/intents-filters.html