什么会导致 NsdManager.discoverServices() 停止在特定设备上查找服务?

What would cause NsdManager.discoverServices() to stop finding services on a particular device?

这是我的代码:

  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.onDiscoverStarteddiscoveryListener.onDiscoveryStopped 按预期得到回调。没有 discoveryListener.onStartDiscoveryFailed 失败。但是 discoveryListener.onServiceFound 再也不会被回调了。相同的代码在同一 wifi 网络上的 Galaxy S9 (Android 10) 上运行良好。相同的代码在 Pixel 3 上运行良好(直到昨天)。

NsdManager 是否对协同程序和线程或 Activity 与应用程序上下文敏感?我想也许我一直在用协程做的一些工作可能导致了它。但现在即使是正式版应用程序也不会 return 任何 onServiceFound 结果仅在此设备上。

有没有可能是NsdManager缓存结果进入了一个坏状态?如果是这样,我该如何重置此状态?以下是我尝试过的一些方法:

等待更长的时间修复了这个问题。可能 48 小时或 24 小时同时没有呼叫 discoverServices