Codenameone 代号为1的EDT违规

Codenameone 代号为1的EDT违规,codenameone,network-connection,Codenameone,Network Connection,使用此代码: protected void second_ButtonAction(Component c, ActionEvent event) { ConnectionRequest cn = new ConnectionRequest(); cn.setUrl(theURLaddress); cn.setPost(false); cn.addArgument("name", "this"); NetworkManager.getInstance().addTo

使用此代码:

protected void second_ButtonAction(Component c, ActionEvent event) {
  ConnectionRequest cn = new ConnectionRequest(); 

  cn.setUrl(theURLaddress);
  cn.setPost(false);  
  cn.addArgument("name", "this");

  NetworkManager.getInstance().addToQueueAndWait(cn);
  cn.getResponseData();
}
EDT violation detected!
com.codename1.impl.javase.JavaSEPort$EDTViolation: EDT Violation Stack!
at com.codename1.impl.javase.JavaSEPort.checkEDT(JavaSEPort.java:344)
EDT violation detected!
EDT violation detected!
EDT violation detected!
at com.codename1.impl.javase.JavaSEPort.isNativeInputSupported(JavaSEPort.java:2459)
at com.codename1.ui.Display.isNativeInputSupported(Display.java:2306)
at com.codename1.ui.TextArea.setText(TextArea.java:406)
at com.codename1.ui.TextArea.<init>(TextArea.java:328)
at com.codename1.ui.TextArea.<init>(TextArea.java:257)
at com.codename1.ui.Dialog.show(Dialog.java:771)
at com.codename1.ui.Dialog.show(Dialog.java:727)
at com.codename1.ui.Dialog.show(Dialog.java:692)
at com.codename1.ui.Dialog.show(Dialog.java:536)
at com.codename1.ui.Dialog.show(Dialog.java:788)
at com.codename1.io.ConnectionRequest.handleErrorResponseCode(ConnectionRequest.java:680)
at com.codename1.io.ConnectionRequest.performOperation(ConnectionRequest.java:379)
at com.codename1.io.NetworkManager$NetworkThread.run(NetworkManager.java:261)
at com.codename1.impl.CodenameOneThread.run(CodenameOneThread.java:176)
com.codename1.impl.javase.JavaSEPort$EDTViolation: EDT Violation Stack!
at com.codename1.impl.javase.JavaSEPort.checkEDT(JavaSEPort.java:344)
at com.codename1.impl.javase.JavaSEPort.getImageWidth(JavaSEPort.java:3087)
at com.codename1.ui.Image.getWidth(Image.java:667)
at com.codename1.ui.EncodedImage.getWidth(EncodedImage.java:413)
at com.codename1.ui.plaf.Border.getMinimumWidth(Border.java:200)
at com.codename1.ui.Container.calcPreferredSize(Container.java:1431)
at com.codename1.ui.Component.calcScrollSize(Component.java:579)
at com.codename1.ui.Component.getScrollDimension(Component.java:566)
at com.codename1.ui.Container.isScrollableY(Container.java:1495)
at com.codename1.ui.Component.isScrollable(Component.java:1413)
at com.codename1.ui.Container.setLayout(Container.java:246)
at com.codename1.ui.Dialog.<init>(Dialog.java:205)
at com.codename1.ui.Dialog.<init>(Dialog.java:189)
at com.codename1.ui.Dialog.<init>(Dialog.java:180)
at com.codename1.ui.Dialog.show(Dialog.java:952)
EDT violation detected!
...
我不断得到以下信息:

protected void second_ButtonAction(Component c, ActionEvent event) {
  ConnectionRequest cn = new ConnectionRequest(); 

  cn.setUrl(theURLaddress);
  cn.setPost(false);  
  cn.addArgument("name", "this");

  NetworkManager.getInstance().addToQueueAndWait(cn);
  cn.getResponseData();
}
EDT violation detected!
com.codename1.impl.javase.JavaSEPort$EDTViolation: EDT Violation Stack!
at com.codename1.impl.javase.JavaSEPort.checkEDT(JavaSEPort.java:344)
EDT violation detected!
EDT violation detected!
EDT violation detected!
at com.codename1.impl.javase.JavaSEPort.isNativeInputSupported(JavaSEPort.java:2459)
at com.codename1.ui.Display.isNativeInputSupported(Display.java:2306)
at com.codename1.ui.TextArea.setText(TextArea.java:406)
at com.codename1.ui.TextArea.<init>(TextArea.java:328)
at com.codename1.ui.TextArea.<init>(TextArea.java:257)
at com.codename1.ui.Dialog.show(Dialog.java:771)
at com.codename1.ui.Dialog.show(Dialog.java:727)
at com.codename1.ui.Dialog.show(Dialog.java:692)
at com.codename1.ui.Dialog.show(Dialog.java:536)
at com.codename1.ui.Dialog.show(Dialog.java:788)
at com.codename1.io.ConnectionRequest.handleErrorResponseCode(ConnectionRequest.java:680)
at com.codename1.io.ConnectionRequest.performOperation(ConnectionRequest.java:379)
at com.codename1.io.NetworkManager$NetworkThread.run(NetworkManager.java:261)
at com.codename1.impl.CodenameOneThread.run(CodenameOneThread.java:176)
com.codename1.impl.javase.JavaSEPort$EDTViolation: EDT Violation Stack!
at com.codename1.impl.javase.JavaSEPort.checkEDT(JavaSEPort.java:344)
at com.codename1.impl.javase.JavaSEPort.getImageWidth(JavaSEPort.java:3087)
at com.codename1.ui.Image.getWidth(Image.java:667)
at com.codename1.ui.EncodedImage.getWidth(EncodedImage.java:413)
at com.codename1.ui.plaf.Border.getMinimumWidth(Border.java:200)
at com.codename1.ui.Container.calcPreferredSize(Container.java:1431)
at com.codename1.ui.Component.calcScrollSize(Component.java:579)
at com.codename1.ui.Component.getScrollDimension(Component.java:566)
at com.codename1.ui.Container.isScrollableY(Container.java:1495)
at com.codename1.ui.Component.isScrollable(Component.java:1413)
at com.codename1.ui.Container.setLayout(Container.java:246)
at com.codename1.ui.Dialog.<init>(Dialog.java:205)
at com.codename1.ui.Dialog.<init>(Dialog.java:189)
at com.codename1.ui.Dialog.<init>(Dialog.java:180)
at com.codename1.ui.Dialog.show(Dialog.java:952)
EDT violation detected!
...
检测到EDT违规行为! com.codename1.impl.javase.JavaSEPort$EDT违规:EDT违规堆栈! 位于com.codename1.impl.javase.JavaSEPort.checkEDT(JavaSEPort.java:344) 检测到EDT违规! 检测到EDT违规! 检测到EDT违规! 位于com.codename1.impl.javase.JavaSEPort.isNativeInputSupported(JavaSEPort.java:2459) 位于com.codename1.ui.Display.isNativeInputSupported(Display.java:2306) 位于com.codename1.ui.TextArea.setText(TextArea.java:406) 位于com.codename1.ui.TextArea.(TextArea.java:328) 位于com.codename1.ui.TextArea。(TextArea.java:257) 在com.codename1.ui.Dialog.show(Dialog.java:771) 在com.codename1.ui.Dialog.show(Dialog.java:727) 在com.codename1.ui.Dialog.show(Dialog.java:692) 在com.codename1.ui.Dialog.show(Dialog.java:536) 在com.codename1.ui.Dialog.show(Dialog.java:788) 在com.codename1.io.ConnectionRequest.handleErrorResponseCode(ConnectionRequest.java:680) 位于com.codename1.io.ConnectionRequest.performOperation(ConnectionRequest.java:379) 位于com.codename1.io.NetworkManager$NetworkThread.run(NetworkManager.java:261) 位于com.codename1.impl.CodenameOneThread.run(CodenameOneThread.java:176) com.codename1.impl.javase.JavaSEPort$EDT违规:EDT违规堆栈! 位于com.codename1.impl.javase.JavaSEPort.checkEDT(JavaSEPort.java:344) 位于com.codename1.impl.javase.JavaSEPort.getImageWidth(JavaSEPort.java:3087) 位于com.codename1.ui.Image.getWidth(Image.java:667) 位于com.codename1.ui.EncodedImage.getWidth(EncodedImage.java:413) 位于com.codename1.ui.plaf.Border.getMinimumWidth(Border.java:200) 位于com.codename1.ui.Container.calcPreferredSize(Container.java:1431) 位于com.codename1.ui.Component.calcScrollSize(Component.java:579) 位于com.codename1.ui.Component.getScrollDimension(Component.java:566) 位于com.codename1.ui.Container.isScrollableY(Container.java:1495) 位于com.codename1.ui.Component.isScrollable(Component.java:1413) 位于com.codename1.ui.Container.setLayout(Container.java:246) 在com.codename1.ui.Dialog.(Dialog.java:205) 在com.codename1.ui.Dialog.(Dialog.java:189) 在com.codename1.ui.Dialog.(Dialog.java:180) 位于com.codename1.ui.Dialog.show(Dialog.java:952) 检测到EDT违规! ...
我错过了什么

除了缺少进度指示外,上述代码看起来不错

您似乎在别处从EDT调用
setText
,但您切断了指向该位置的堆栈跟踪

编辑:

protected void second_ButtonAction(Component c, ActionEvent event) {
  ConnectionRequest cn = new ConnectionRequest(); 

  cn.setUrl(theURLaddress);
  cn.setPost(false);  
  cn.addArgument("name", "this");

  NetworkManager.getInstance().addToQueueAndWait(cn);
  cn.getResponseData();
}
EDT violation detected!
com.codename1.impl.javase.JavaSEPort$EDTViolation: EDT Violation Stack!
at com.codename1.impl.javase.JavaSEPort.checkEDT(JavaSEPort.java:344)
EDT violation detected!
EDT violation detected!
EDT violation detected!
at com.codename1.impl.javase.JavaSEPort.isNativeInputSupported(JavaSEPort.java:2459)
at com.codename1.ui.Display.isNativeInputSupported(Display.java:2306)
at com.codename1.ui.TextArea.setText(TextArea.java:406)
at com.codename1.ui.TextArea.<init>(TextArea.java:328)
at com.codename1.ui.TextArea.<init>(TextArea.java:257)
at com.codename1.ui.Dialog.show(Dialog.java:771)
at com.codename1.ui.Dialog.show(Dialog.java:727)
at com.codename1.ui.Dialog.show(Dialog.java:692)
at com.codename1.ui.Dialog.show(Dialog.java:536)
at com.codename1.ui.Dialog.show(Dialog.java:788)
at com.codename1.io.ConnectionRequest.handleErrorResponseCode(ConnectionRequest.java:680)
at com.codename1.io.ConnectionRequest.performOperation(ConnectionRequest.java:379)
at com.codename1.io.NetworkManager$NetworkThread.run(NetworkManager.java:261)
at com.codename1.impl.CodenameOneThread.run(CodenameOneThread.java:176)
com.codename1.impl.javase.JavaSEPort$EDTViolation: EDT Violation Stack!
at com.codename1.impl.javase.JavaSEPort.checkEDT(JavaSEPort.java:344)
at com.codename1.impl.javase.JavaSEPort.getImageWidth(JavaSEPort.java:3087)
at com.codename1.ui.Image.getWidth(Image.java:667)
at com.codename1.ui.EncodedImage.getWidth(EncodedImage.java:413)
at com.codename1.ui.plaf.Border.getMinimumWidth(Border.java:200)
at com.codename1.ui.Container.calcPreferredSize(Container.java:1431)
at com.codename1.ui.Component.calcScrollSize(Component.java:579)
at com.codename1.ui.Component.getScrollDimension(Component.java:566)
at com.codename1.ui.Container.isScrollableY(Container.java:1495)
at com.codename1.ui.Component.isScrollable(Component.java:1413)
at com.codename1.ui.Container.setLayout(Container.java:246)
at com.codename1.ui.Dialog.<init>(Dialog.java:205)
at com.codename1.ui.Dialog.<init>(Dialog.java:189)
at com.codename1.ui.Dialog.<init>(Dialog.java:180)
at com.codename1.ui.Dialog.show(Dialog.java:952)
EDT violation detected!
...
从修改后的堆栈跟踪来看,这一行似乎是最重要的: 在com.codename1.io.ConnectionRequest.handleErrorResponseCode(ConnectionRequest.java:680)


您将收到对handleErrorResponseCode的调用,这意味着URL返回了错误代码。因此,我们向您显示一个错误对话框。是的,它确实违反了EDT(这些异常在模拟器中用于警告潜在的bug)。您需要决定如何处理错误响应代码,并通过派生连接请求并重写此方法,或通过将错误处理程序绑定到网络管理器,或通过在连接请求上调用setFailSumminet(true)来适当地处理它们。

缺少进度是正确的。上述代码恰好是StateMachine中编辑的唯一代码。在stacktrace中添加了更多内容。请参阅我修改后的回复