Как я могу совместно использовать службу между действиями без перезапуска?

Я пишу приложение SIP с помощью SDK. В моем приложении много действий, поэтому я инициализирую и завершаю SDK, используя методы onCreate и onDestroy службы, чтобы я мог запускать его на время моего приложения (а не только отдельного действия).

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

Я хотел бы сделать привязку к сервису с помощью Context.BIND_AUTO_CREATE в методе OnCreate базового класса Activity и отключить его в OnDestroy. Все мои действия простираются от этого, поэтому я бы получил доступ к Сервису во всех своих действиях.

Но что происходит при изменении конфигурации или переключении действий? Служит ли агрессия агрессивно убит за короткий промежуток времени между действиями или есть гарантия, что этого не произойдет? Если это первый, разве это не калечит использование услуг? Какой шаблон дизайна я должен использовать, чтобы что-то сохранилось в течение всего срока службы моего приложения?

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

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

В разделе «Действия» запустите службу с помощью функции startService() а также привяжите ее к сервису. Это приведет к сохранению работоспособности вашего сервиса при изменении конфигурации.

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

Храните переменную статического счетчика в своей активности запуска. Увеличьте его на 1 для другого запуска активности в onCreate() и уменьшите его на единицу в onDestroy() . Итак, если 3 действия были открыты и предполагается, что вы держите остальные 2 в стоге, статический счетчик равен трем. Теперь в onDestroy() каждого уменьшения счетчика и проверьте, равен ли он нулю, остановите службу.

В моей FirstActivity ( Launcher ) у меня есть public static int counter = 0;

Затем в каждой операции:

 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); FirstActivity.counter++; } @Override protected void onDestroy() { super.onDestroy(); if (--FirstActivity.counter == 0) { stopService(new Intent(this, MyService.class)); } }