Послуги іноді бувають досить складними.
Коли ви запускаєте послугу з якоїсь діяльності (або вашого процесу), служба, по суті, працює на тому ж процесі.
цитування з приміток розробника
Найбільша плутанина щодо класу Service насправді пов’язана з тим, чим він не є:
Послуга - це не окремий процес. Сам об’єкт Служби не означає, що він працює у власному процесі; якщо не вказано інше, він запускається в тому ж процесі, що і програма, частиною якої він є.
Послуга - це не нитка. Сам по собі спосіб не обробляти основний потік (щоб уникнути помилок програми, що не відповідають).
Отже, що це означає, якщо користувач відведе додаток від останніх завдань, він видалить ваш процес (сюди входять всі ваші дії тощо). Тепер візьмемо три сценарії.
По-перше, коли служба не має попереднього сповіщення.
У цьому випадку ваш процес буде вбито разом із вашою послугою.
По-друге, коли служба має попереднє сповіщення
У цьому випадку послугу не вбивають, як і процес
Третій сценарій Якщо служба не має попереднього сповіщення, вона все одно може продовжувати працювати, якщо програму закрито. Ми можемо зробити це, змусивши службу працювати в іншому процесі. (Однак я чув, як деякі люди говорять, що це може не спрацювати. Ви залишили вам спробувати це самостійно )
Ви можете створити службу в окремому процесі, включивши в свій маніфест атрибут нижче.
android: process = ": yourService"
або
android: process = "yourService" Назва процесу повинна починатися з нижнього регістру.
цитування з приміток розробника
Якщо ім'я, призначене цьому атрибуту, починається з двокрапки (':'), новий процес, приватний для програми, створюється, коли це потрібно, і служба запускається в цьому процесі. Якщо ім'я процесу починається з малого символу, служба буде запускатися в глобальному процесі з цим іменем за умови, що вона має на це дозвіл. Це дозволяє компонентам різних програм спільно використовувати процес, зменшуючи використання ресурсів.
це те, що я зібрав, якщо хтось є експертом, будь ласка, виправте мене, якщо я помиляюся :)