Size: a a a

2020 April 18

DA

Daniyar Amangeldy in Android KZ
Timur Borgalinov
Служба является «запущенной», когда компонент приложения (например, операция) запускает ее вызовом startService(). После запуска служба может работать в фоновом режиме в течение неограниченного времени, даже если уничтожен компонент, который ее запустил.
Компонент != Процесс
источник

DA

Daniyar Amangeldy in Android KZ
У тебя сервис работает в скопе процесса
источник

DA

Daniyar Amangeldy in Android KZ
По умолчанию в скоупе процесса приложения
источник

DA

Daniyar Amangeldy in Android KZ
Ты можешь изменить и запустить на другом процессе
источник

DA

Daniyar Amangeldy in Android KZ
В таком случае он умрет, когда ОС сама решит это сделать
источник

KV

Kirill Van in Android KZ
Timur Borgalinov
Служба является «запущенной», когда компонент приложения (например, операция) запускает ее вызовом startService(). После запуска служба может работать в фоновом режиме в течение неограниченного времени, даже если уничтожен компонент, который ее запустил.
Самый простой способ проверить, поставить брейкпоинт в сервисе, если дебагер тебя выкинул значит сервис мертв. В сервисе есть метод onDestroy поставь лог и посмотри что случится
источник

TB

Timur Borgalinov in Android KZ
Спасибо всем за отклик
источник

TB

Timur Borgalinov in Android KZ
очень помогли
источник

KV

Kirill Van in Android KZ
Timur Borgalinov
Спасибо всем за отклик
Всегда проблемы с сервисами, если есть шанс их не использовать то лучше не использовать
источник

DA

Daniyar Amangeldy in Android KZ
Timur Borgalinov
очень помогли
источник

DA

Daniyar Amangeldy in Android KZ
Тут описан Lifecycle процесса
источник

DA

Daniyar Amangeldy in Android KZ
В общем, Если компонент Application мертв, не означает что процесс умрет
источник

DA

Daniyar Amangeldy in Android KZ
A service process is one holding a Service that has been started with the startService() method. Though these processes are not directly visible to the user, they are generally doing things that the user cares about (such as background network data upload or download), so the system will always keep such processes running unless there is not enough memory to retain all foreground and visible processes.
источник

DA

Daniyar Amangeldy in Android KZ
Services that have been running for a long time (such as 30 minutes or more) may be demoted in importance to allow their process to drop to the cached list described next. This helps avoid situations where long running services that use excessive resources (for example, by leaking memory) prevent the system from delivering a good user experience.
источник

TB

Timur Borgalinov in Android KZ
Понял, значит создание сервиса увеличивает щансы процесса приложения на выживание?
источник

DA

Daniyar Amangeldy in Android KZ
Если у тебя есть на бэке Сервис, значит процесс его живой и держит ресурсы памяти. ОС будет уменьшать его приоритет со временем. Таким образом, сервис со временем будет c minor приоритетом и умрет скорее всего, Если памяти будет не хватать. Умрет процесс , за ним сервис тоже
источник

MB

Mukhtar Bimurat in Android KZ
Timur Borgalinov
Понял, значит создание сервиса увеличивает щансы процесса приложения на выживание?
еще как я помню на xiami redmi 4x (может быть на всех mi) если нет autostart permission -> то простой  Service сразу умрет после удаления из recents screen
источник

DA

Daniyar Amangeldy in Android KZ
Timur Borgalinov
Понял, значит создание сервиса увеличивает щансы процесса приложения на выживание?
там по ссылке если пройти есть приоритет компонентов
источник

TB

Timur Borgalinov in Android KZ
Вот теперь вопрос может глупый, кажется я совсем туплю) если мы запустили обычный  сервис на главном потоке через startService и этот поток был уничтожен, то как система продолжает операции в сервисе, получается что поток логический не был уничтожен, но только частично очищен от UI компонентов запущенных на нём?
источник

TB

Timur Borgalinov in Android KZ
и чисто теоретически это прям большое поле для возможных memory leaks?
источник