gpt4 book ai didi

codenameone - 在代号一中缩放图像时检测到 EDT 违规

转载 作者:行者123 更新时间:2023-12-04 03:13:30 26 4
gpt4 key购买 nike

我正在尝试开发一个应用程序,该应用程序将显示缩放以适合屏幕大小的任意图像。但是,在 EDT 上缩放图像会显着降低 UI,因此我决定使用以下代码在后台线程中缩放图像。

    final Runnable updateUI = new Runnable() {
public void run() {
//Update the UI here
}
};
Runnable r = new Runnable() {
public void run() {
Image i = Resources.getGlobalResources().getImage("apple-icon.png");
i.scaled(50, 40);
//Display.getInstance().callSerially(updateUI);
//This line of code is not related to the EDT error
}
};
new Thread(r).start();

但是尽管图像不在 GUI 上(还),模拟器在控制台中显示以下错误(重复数百次,有时会打印不完整的堆栈):

EDT violation detected!
com.codename1.impl.javase.JavaSEPort$EDTViolation: EDT Violation Stack!
at com.codename1.impl.javase.JavaSEPort.checkEDT(JavaSEPort.java:545)
at com.codename1.impl.javase.JavaSEPort.getImageWidth(JavaSEPort.java:3945)
at com.codename1.ui.Image.getWidth(Image.java:689)
at com.codename1.ui.EncodedImage.getWidth(EncodedImage.java:511)
at com.codename1.ui.EncodedImage.scaledEncoded(EncodedImage.java:600)
at com.codename1.ui.EncodedImage.scaled(EncodedImage.java:653)
at com.mycompany.myapp.MyApplication$1.run(MyApplication.java:81)
at java.lang.Thread.run(Thread.java:745)

我想知道这是预期的行为还是我的代码中的错误,以及如何消除此错误?请指教。

最佳答案

尽管有警告,但通常应该可以正常工作,事实上我们的代码正是这样做的,并产生了 EDT 警告。

检测 EDT 违规是不准确的,因为某些 EDT 违规可能会在未到达实现层的情况下发生。这就是为什么我们选择过于急切,宁愿出现“误报”也不愿完全错过目标。

请注意,虽然缩放应该对 EDT 有效,但其他一些图像处理可能不会。例如。在后台绘制图像在 iOS 上可能会严重失败。

关于codenameone - 在代号一中缩放图像时检测到 EDT 违规,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41398916/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com