我继承了一个读取特征然后关闭连接的 Android 应用程序。对于版本 4 和 5 的 Android Gatt 缓存服务和特征,并在后续连接上使用缓存。这对我的应用程序有好处,尽管我知道它会导致其他问题。
最近在 MOTO Play 上使用 Android 6.0.1 进行的测试表明,Gatt 没有使用缓存,而是在每个连接上请求服务和特性。我的应用程序仍然可以工作,但它需要时间并且会耗电,这很糟糕。
谷歌搜索后,我不清楚 Gatt 缓存是在配对/绑定(bind)后启用还是刚连接后启用。我的应用程序不配对或绑定(bind)。
最佳答案
它与配对/绑定(bind)或连接无关。一旦您在连接后执行发现,Android 就会缓存服务和特征。
根据我的经验,我发现一些设备总是进行发现,而另一些不进行 GATT 缓存的设备节省了大量时间。外设更改其服务或特性的情况并不常见,因此缓存始终是一种不错的方法。然而不幸的是,您无法通过 Android API 进行管理,这完全取决于 Android 和设备的 BLE 堆栈固件。
关于android - Android 6.0.1 中的 Gatt 缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40511225/