2017-03-15 62 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()包裝你的代碼,現在應該解決它。