Сокеты и многопоточность с Android

1

Я пытаюсь разрешить двум потокам в приложении Android общаться друг с другом. Простой, не так ли? У меня два потока:

  • Основной поток управляет пользователем интерфейс приложения (Thread А)
  • Другой управляет сокет TCP (Thread B)

В настоящий момент для того, чтобы Thread A отправил сообщения в Thread B, я использую класс со статическими данными экземпляра и статическими методами, которые могут быть установлены Thread A. Thread B использует цикл для проверки входящих данные по сокету, поэтому я использовал один и тот же цикл, чтобы проверить изменение этого дополнительного класса. То, как мне удалось отправить данные из Thread A в Thread B. Однако мне также хотелось бы, чтобы Thread B смог уведомить Thread A, основной поток пользовательского интерфейса, что сокет был закрыт, и действовать по этому поводу. К сожалению, хотя Thread A не использует никаких циклов для проверки чего-либо непрерывно. Итак, мой вопрос: как я могу известить Thread A об изменении Thread B? Я выполнил поиск и обнаружил, что шаблон Observer будет полезен, но я не уверен, что могу привести шаблон Observer в мою существующую настройку. Любая помощь или руководящие мысли были бы высоко оценены! Спасибо.

Теги:
multithreading
sockets

1 ответ

2
Лучший ответ

Создайте экземпляр обработчика в потоке пользовательского интерфейса (Thread A), передайте ссылку обработчика на Thread B. Если вы хотите уведомить Thread A о чем-нибудь, создайте объект Message и используйте обработчик для sendMessage().

Пример очень простого шаблона здесь

Проверка официальных документов для классов Handler и Message

google для учебника обработчика андроида

  • 0
    О, отлично. Это должно работать отлично. Спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню