Разрешение AsyncTask манипулировать значениями в разных классах активности - PullRequest
1 голос
/ 12 февраля 2011

Этот заголовок может показаться странным, поэтому позвольте мне объяснить, что я пытаюсь сделать. У меня есть несколько классов активности, каждый из которых представляет свое представление в моем приложении. Мой начальный класс активности загружается при запуске приложения. Пользователь вводит значения, и в конце концов открывается сокет TCP, а затем я использую AsyncTask для прослушивания и ответа на сообщения от сервера. Я бы хотел, чтобы этот класс AsyncTask прослушивал, пока приложение не закрылось / не было достигнуто условие ошибки, и мог обновлять значения в других классах действий после их запуска. Имеет ли это смысл (это была долгая, разочаровывающая ночь)? Я знаю, что ссылки на классы статических операций - это плохая практика, и касание потока пользовательского интерфейса из других действий также плохо, но у меня возникают проблемы с поиском чистого решения этой проблемы. Может быть, использование AsyncTask не лучший подход здесь? Должен ли я использовать сервис вместо этого или что-то еще полностью?

Заранее спасибо.

1 Ответ

3 голосов
/ 12 февраля 2011

Пользователь вводит значения, и в конце концов открывается сокет TCP, а затем я использую AsyncTask для прослушивания и ответа на сообщения от сервера.

AsyncTask предназначен для кратковременных операций (например, чтение с флэш-памяти, запись с флэш-памяти, вызовы веб-службы). Используйте свой собственный фоновый поток для бесконечно долгих операций.

Я бы хотел, чтобы этот класс AsyncTask прослушивался до тех пор, пока приложение не будет закрыто / состояние ошибки не достигло

В Android нет такого понятия "приложение закрыто", равно как и в Интернете нет понятия "приложение закрыто".

и иметь возможность обновлять значения в других классах занятий после их запуска.

Звучит как работа для службы, а не просто какой-то случайный поток или AsyncTask. Для начала, как только ваша исходная активность, которая запустила фоновый поток или AsyncTask, будет уничтожена, вам нужно избавиться от фонового потока или AsyncTask.

Должен ли я использовать службу вместо этого или что-то еще полностью?

Я настоятельно рекомендую вам ознакомиться с услугами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...