这是我的密码:
private val nsdManager = (context.getSystemService(Context.NSD_SERVICE) as NsdManager)
fun go() {
val discoveryListener = object : NsdManager.DiscoveryListener { ... }
nsdManager.discoverServices("_sonos._tcp.", NsdManager.PROTOCOL_DNS_SD, discoveryListener)
}这个代码已经运行了好几个月了,但是昨天它刚刚停止了Pixel 3 (Android 11,1月5日的安全补丁)的工作。discoveryListener.onDiscoverStarted和discoveryListener.onDiscoveryStopped将按预期被召回。没有discoveryListener.onStartDiscoveryFailed失败。但是discoveryListener.onServiceFound再也没有回过电话了。在相同的wifi网络上,同样的代码在(Android10)上运行得很好。同样的代码在Pixel 3上运行良好(直到昨天)。
NsdManager是否对协同和线程或活动与应用程序上下文敏感?我想也许是我一直在用协同剂做的一些工作导致了这一切。但是现在即使是生产应用程序也不只是在这个设备上返回任何onServiceFound结果。
是否有可能NsdManager缓存结果并进入一个糟糕的状态?如果是的话,我如何重新设置这个状态?以下是我尝试过的一些事情:
发布于 2021-01-14 19:38:38
等得更久才解决这个问题。可能是48小时,也可能是24小时,同时没有呼叫discoverServices。
https://stackoverflow.com/questions/65674988
复制相似问题