Android, лучший способ отправить данные в набор подписанных потоков?

#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