2017-03-15 97 views
1

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

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

我看了其他问题,如CodenameOne background task for BluetoothLe connection,但不是真的一样。

关于如何“解锁”这个任何建议,并允许GUI更新,同时接收通知?

+0

你可以张贴一些片段来展示你在做什么,我们可以帮助你了解什么是违反美国东部时间。 – Diamond

回答

0

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