Если я запустил службу в своем основном действии, а затем выйду из основного и снова создаю основной, будет ли на его место помещен новый экземпляр службы? или это будет тот же экземпляр? или будет два экземпляра? Мне нужно знать, потому что в моем сервисе я делаю уникальный идентификатор каждый раз, когда создается новый сервис.
Каждый раз, когда вы вызываете startService() или startForegroundService() в Android, фреймворк проверяет, запущена ли эта служба.
Итак, чтобы ответить на ваш вопрос, да. Будет только один экземпляр.
Однако каждый раз, когда вы вызываете startService() или startForegroundService(), будет вызываться метод onStartCommand() Службы. Это означает, что если у вас есть одноразовая инициализация в вашей службе что вы не хотите, чтобы вас снова оживили, поместите ее в onCreate().
@BAHMAN, но вопрос был не в этом.
@TheWanderer вопрос касался создания новых идей при создании сервиса. служба может остановиться, и новый идентификатор может быть создан, и об этом стоит знать.
@BAHMAN, спасибо, что указали на это. В этом случае я просто сохраню идентификатор в общих настройках при первом его создании и буду извлекать идентификатор каждый раз.
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?
У вас есть две ситуации. Если ваша служба продолжает работать, новый экземпляр не будет создан, но если ваша служба остановится (завершит свою работу или система остановит ее из-за нехватки памяти или других ситуаций), когда вы запустите ее снова, вы получите ее новый экземпляр.
@AnubhavGupta, этот ответ не совсем правильный, потому что служба может остановиться после запуска.