Подтвердить что ты не робот

Потоки приложений vs Сервисные потоки

Каковы преимущества/недостатки при размещении длинного кода сетевого доступа в потоке в активности или потоке в службе? Как это повлияет на приложение? Я пишу потоковый аудиоплеер, и из того, что я читал до сих пор, ввод кода в службу по-прежнему будет блокировать приложение, так что нужен новый поток, кто-нибудь знает, имеет ли смысл вкладывать этот фрагмент кода в службе.

4b9b3361

Ответ 1

Да, операция блокировки в Сервисе по-прежнему будет блокировать приложение. Несмотря на первые появления, службы не просто выполняют задачи в фоновом режиме. Они предназначены для выполнения задач с жизненным циклом, который не зависит от жизненного цикла Activity (IE, они могут продолжаться после закрытия Activity).

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

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

Ответ 2

По моему опыту (разработка Android на более чем 1 год) нет никакой разницы между запуском нового потока в службе или в активности. Попытайтесь не ссылаться на Activity в новом потоке - используйте контекст приложения.

Кроме того, жизненный цикл службы вообще не помог, поскольку некоторые методы не могут быть вызваны: (

Единственное различие может заключаться в том, что служба может быть уничтожена без полного уничтожения приложения - таким образом потенциально уничтожает новые потоки. Почему потенциально? потому что с практической стороны этого не происходит. Приложение ВСЕГДА убивается, не убивая службу до этого, что означает: механизм локальной службы бесполезен!!!

Удаленная служба - это другое обсуждение - я имел в виду только "где я должен запускать новый поток?".

Удачи!!!