android - requestCellInfoUpdate() 的正确用法是什么?
问题描述
利用onSignalStrengthsChanged
、getAllCellInfo()
和相关方法,我的应用程序监控细胞信号数据并实时显示结果。我的代码在以 API 28 及更低版本为目标时运行良好,在数据更改时自动刷新数据。以 API 29 为目标会导致一些Android 10 设备无法更新数据——但不是全部。
我发现TelephonyManager.requestCellInfoUpdate()
已添加到 API 29,可能需要(?)来解决此问题。但是,除了Android Reference 上的简明定义之外,我无法找到有关此方法的任何信息。是否需要使用此方法刷新单元格信息?是否有任何代码示例或进一步的解释?
如果该方法不相关,那么 API 29 中是否还有可能导致此行为的更改?ACCESS_FINE_LOCATION
已确认被授予,这似乎是唯一的其他相关 API 更改。
解决方案
阅读文档,文档中提到了这一点getAllCellInfo()
。
面向 Android Q 或更高版本的应用将不再通过调用此 API 来触发缓存的 CellInfo 刷新。相反,这些应用程序将收到最新的缓存结果,这些结果可能不是最新的。面向 Android Q 或更高版本的应用希望请求更新的 CellInfo 应调用 requestCellInfoUpdate(); 但是,在所有情况下,更新都将受到速率限制且无法保证。要确定 CellInfo 数据的新近度,调用者应检查 CellInfo#getTimeStamp()。
因此,如果您的目标是 Android Q 或更高版本,您应该选择requestCellInfoUpdate()
推荐阅读
- python - 无法访问用 Vaurien 启动的 HTTP 代理
- pandas - Pandas:每个维度组合的聚合平均值(“总数”)
- regex - 正则表达式:捕获多行直到一个模式
- django - 如何在 Django 中使用外键查找字段值
- javascript - 在另一个函数中进行异步调用后,我一直未定义
- ios - React Native ScrollView 自动隐藏键盘在低级设备上滞后
- javascript - ES6 导入的执行顺序,在 HTML 和代码中
- lua - 尝试将中间单击按钮分配给 LUA 自动点击器脚本(Logitech G203 鼠标)
- node.js - 当我最终将我的网站发布到主机服务器时,我是否会更改 app.listen('port number') ?
- angular - Angular - 将可观察对象的值分配给另一个可观察对象的字段