3 回答

TA貢獻(xiàn)1911條經(jīng)驗(yàn) 獲得超7個(gè)贊
這些問題中的大多數(shù)都是由于爭用條件和違反 EDT 而發(fā)生的。這意味著您在手動(dòng)創(chuàng)建或通過以下方式獲取的單獨(dú)線程中對UI進(jìn)行了更改:計(jì)時(shí)器,網(wǎng)絡(luò)等。
我們在模擬器中提供了一個(gè)EDT違規(guī)檢測工具,您可以啟用該工具。當(dāng)您在啟用此工具的情況下運(yùn)行時(shí),它將打印可疑違規(guī)的堆棧跟蹤。請注意,在某些情況下,它可能會產(chǎn)生“誤報(bào)”,但在這種情況下通常非常好。

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超5個(gè)贊
這些問題中的大多數(shù)都是由于爭用條件和違反 EDT 而發(fā)生的。這意味著您在手動(dòng)創(chuàng)建或通過以下方式獲取的單獨(dú)線程中對UI進(jìn)行了更改:計(jì)時(shí)器,網(wǎng)絡(luò)等。
我們在模擬器中提供了一個(gè)EDT違規(guī)檢測工具,您可以啟用該工具。當(dāng)您在啟用此工具的情況下運(yùn)行時(shí),它將打印可疑違規(guī)的堆棧跟蹤。請注意,在某些情況下,它可能會產(chǎn)生“誤報(bào)”,但在這種情況下通常非常好。

TA貢獻(xiàn)1783條經(jīng)驗(yàn) 獲得超4個(gè)贊
更新TextArea 是一個(gè) UI 組件,因此所有交互都應(yīng)在 codenameOne 事件調(diào)度線程 (EDT) 上進(jìn)行。
在 TextArea 的 codenameone 主文件中,變量在方法內(nèi)部聲明,并且具有調(diào)用 preced,因此它不是 null。所以罪魁禍?zhǔn)姿坪跏?rowText
rowStrings.add(rowText)
堆棧跟蹤報(bào)告位置:https://github.com/codenameone/CodenameOne/blob/master/CodenameOne/src/com/codename1/ui/TextArea.java#L1199
rowStrings 是一個(gè)實(shí)例成員,但它不是最終成員,也不是受鎖定保護(hù)的成員。
Shai Almog在他的回答中指出:任何對TextArea的操縱都應(yīng)該發(fā)生在EDT上。TextArea 作為 UI 組件,不需要擔(dān)心并發(fā)性。
添加回答
舉報(bào)