Постоянные службы / поток в Android - PullRequest
2 голосов
/ 29 апреля 2011

Я только недавно начал работать с платформой Android и ищу шаблоны советов / дизайна для использования в следующих ситуациях:

Приложение представляет собой структуру сервера / клиента. Сервер должен работать постоянно (или, по крайней мере, быть воссозданным вскоре после завершения), но клиент может закрыться по мере необходимости. Чтобы реализовать сервер, я понимаю, что хочу расширить Service, использовать функциональность START_STICKY и запускать его в фоновом режиме.

Часть, в которой я немного растерялся, - это то, что я хочу создать несколько постоянных сетевых подключений внутри сервера. Важно, чтобы соединения были многопоточными и могли работать асинхронно. Многие документы указывают на использование AsyncTask для этого, но мне вообще не нужно ссылаться на поток пользовательского интерфейса из сетевых потоков, и соединения никогда не будут разорваны, поэтому я надеюсь, что кто-то может указать мне лучше направление

Моя концептуальная идея заключалась в том, чтобы сетевые потоки связывались со службой для хранения событий, а затем клиент мог также связываться со службой для получения событий. Я не уверен, какую структуру использовать для этих сетевых потоков.

1 Ответ

0 голосов
/ 29 апреля 2011

Сервер должен работать постоянно

Очень немногие приложения нуждаются в этом. Статистически говоря, ваш, вероятно, не один из них. Пользователи нападают на таких, как вы, с помощью убийц задач и тому подобного, а также выставляют на Маркете одну звезду за то, что они наносят вред использованию своего устройства. Я настоятельно рекомендую вам пересмотреть это дизайнерское решение.

так что я надеюсь, что кто-то может направить меня в лучшем направлении?

Простые старые обычные потоки Java просто в порядке. В зависимости от характера потоков, вы можете рассмотреть возможность использования пула потоков. Эта часть существенно не отличается от других сред Java. Имейте в виду, что подавляющее большинство Android-устройств на сегодняшний день являются одноядерными, и у вас есть только столько места в куче (всего 16 МБ), поэтому иметь огромное количество потоков не совсем хорошо.

Моя концептуальная идея состояла в том, чтобы сетевые потоки связывались со службой для хранения событий

Потоки сети являются частью службы, и, следовательно, не должны привязываться к ней.

...