If Android is on it's way to suspend when stopBrowser() is called, we need
to call nsd.stopServiceDiscovery() synchronously to force it to run
before the device goes to sleep.
Was an issue on Android 10 on Levono Tab M10 FHD Plus
TB-X606FA_S300554-220630_BMP
If Android is on it's way to suspend when stopServicePublish() is called,
we need to call nsd.unregisterService() synchronously to force it to run
before the device goes to sleep. If instead it is scheduled to run in the
Android thread, it will not run until the device is woken back up.
The publish service name and type are passed to startServicePublish() as
char pointers. startServicePublish() calls runOnAndroidThread which asks
the java code to run registerService(). If name and type are objects on
the stack, they could get freed / deleted before the registerService() is
run in the java thread which would cause registerService() to use deleted
objects. Fix --> make permanent objects for name and type.