蓝牙通知和Android GUI更新

时间:2017-03-15 15:29:26

标签: android user-interface bluetooth codenameone

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

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

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

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

1 个答案:

答案 0 :(得分:0)

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