Какой тип метода потока я должен использовать для непрерывной работы? - PullRequest
1 голос
/ 16 декабря 2011

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

Android также предлагает некоторые классы:

Сервис : но он использует поток пользовательского интерфейса ...

AsyncTask : вероятно, лучший кандидат

IntentService : есть рабочий поток, которым можно манипулировать? Наверное, лучший вариант сверху.

Любые мысли / мнения будут высоко оценены. :)

EDIT:

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

Иерархия вызовов потоков:

MainActivity -> NetworkSwap (бесконечный процесс сканирования, подключения и замены сетей WiFi), ServerTCP (бесконечное прослушивание подключений), ServerUDP (бесконечно прослушивает соединения)

Networkswap -> ClientUDP (отправляет широковещательный запрос на serverUDP и завершает работу)

ServerUDP -> ClientTCP (отправляет запрос на serverTCP и завершает работу)

1 Ответ

1 голос
/ 16 декабря 2011

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

Тем не менее, при продолжающейся работе я бы сказал, что ваш текущий поток будет управляться обычной службой, что дает время жизни, которое не зависит от действий и может выполнять текущую фоновую работу. IntentService лучше подходит для небольших отдельных кусков работы. Если у вас есть эти два типа работы, и они не очень связаны, вы можете даже рассмотреть возможность использования обоих типов сервисов (похоже, у вас есть несколько потоков, как есть).

...