Android: остановка службы Bonjour после запуска родительского процесса
Мое приложение - это, по сути, фоновый сервис, который должен периодически регистрироватьNSD
оказание услуг (Bonjour
service), чтобы разрешить обнаружение сервера сокетов, запускаемого основным фоновым сервисом (или приложением).
Если я читаюAndroid Bonjour Service doc правильно, это то, как вы начинаетеBonjour
услуга (сокращенно для краткости):
mNsdManager = Context.getSystemService(Context.NSD_SERVICE);
mDiscoveryListener = new NsdManager.DiscoveryListener()
mNsdManager.discoverServices(
SERVICE_TYPE, NsdManager.PROTOCOL_DNS_SD, mDiscoveryListener);
... и вот как ты это прекратишь:
mNsdManager.unregisterService(mRegistrationListener);
Вот часть, которую я не могу обернуть головой: если основной сервис резко падает, любойBonjour
служба, которая была зарегистрирована во время сбоя, продолжает работать, даже если у нее больше нет цели (сервер сокетов, который он помогает обнаружить, больше не существует).
Я не могу очистить зомбиBonjour
услуги, когда основной сервис перезапускается, потому чтоmRegistrationListener
служба была первоначально зарегистрирована, также больше не существует.
Я подозреваю, что выбрал неправильный подход: как мне убедиться, что я не оставляю беспорядок зомбиBonjour
службы позади после того, как основной сервис потерпел крах?