Является ли служба Android синглтоном?

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

6
0
1 329
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Каждый раз, когда вы вызываете startService() или startForegroundService() в Android, фреймворк проверяет, запущена ли эта служба.

Итак, чтобы ответить на ваш вопрос, да. Будет только один экземпляр.

Однако каждый раз, когда вы вызываете startService() или startForegroundService(), будет вызываться метод onStartCommand() Службы. Это означает, что если у вас есть одноразовая инициализация в вашей службе что вы не хотите, чтобы вас снова оживили, поместите ее в onCreate().

@AnubhavGupta, этот ответ не совсем правильный, потому что служба может остановиться после запуска.

ygngy 10.09.2018 20:35

@BAHMAN, но вопрос был не в этом.

TheWanderer 10.09.2018 20:36

@TheWanderer вопрос касался создания новых идей при создании сервиса. служба может остановиться, и новый идентификатор может быть создан, и об этом стоит знать.

ygngy 10.09.2018 20:38

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

buckithed 10.09.2018 20:48

If I start a service in my main activity, then exit main and create main again, will a new service instance be put in its place?

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

Другие вопросы по теме