【问题标题】:Bluetooth notification and Android GUI updates蓝牙通知和 Android GUI 更新
【发布时间】:2017-08-06 10:48:06
【问题描述】:

在 Android 上使用 CodenameOne,我通过蓝牙 LE 订阅了计步器特性。看来我正在收到通知,我目前只是将数据“写入”到应用程序中的文本区域,作为我在解析数据并很好地呈现数据之前的第一轮确认数据。问题是应用程序快速锁定,好像 GUI 重绘和通知事件之间存在死锁问题。 GUI 更新是在订阅“侦听器”中完成的,据我了解,它位于 CodenameOne 环境中的 GUI 线程上。 “侦听器”基本上在 text.setText()、text.repaint() 处执行。没什么特别的。

所以,我不确定如何更新 GUI 并同时接收通知。如果我可以解决一般锁定问题,我有一个按钮,用户可以单击它来停止订阅。那个按钮当然不能在当前状态下使用。

我查看了其他问题,例如CodenameOne background task for BluetoothLe connection,但并不完全相同。

关于如何“解锁”它并在接收通知时允许 GUI 更新的任何建议?

【问题讨论】:

  • 您能否发布一些 sn-p 来展示您在做什么,我们可以帮助您调查违反 EDT 的内容。

标签: android user-interface bluetooth codenameone


【解决方案1】:

实际上查看代码here 似乎回调只是调用了actionPerformed 方法而没有返回到EDT。我认为这应该在库中修复,因为它明显违反了 Codename One 的通用语义。我建议用callSerially() 包装你的代码,这应该可以解决它。

【讨论】:

    猜你喜欢
    • 2021-09-22
    • 1970-01-01
    • 1970-01-01
    • 2013-04-21
    • 2011-07-20
    • 2018-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多