我已经使用infinteScrollAdapter与connectRequest from json来填充组件,但有时它会给出以下错误,而它通常运行良好。这里可能有什么问题?如果我再次运行它工作正常,但它有时会挂起很长时间,然后显示此错误
[AWT-EventQueue-0] 0:0:0,0 - EDT performance is very slow triggering this exception!
[AWT-EventQueue-0] 0:0:0,1 - Exception: java.lang.ArrayIndexOutOfBoundsException - 1000
java.lang.ArrayIndexOutOfBoundsException: 1000
[AWT-EventQueue-0] 0:0:0,75 - EDT performance is very slow triggering this exception!
[AWT-EventQueue-0] 0:0:0,76 - Exception: java.lang.ArrayIndexOutOfBoundsException - 1000
at com.codename1.ui.Display.addPointerEventWithTimestamp(Display.java:1678)
at com.codename1.ui.Display.pointerDragged(Display.java:1704)
at com.codename1.impl.CodenameOneImplementation.pointerDragged(CodenameOneImplementation.java:1957)
at com.codename1.impl.CodenameOneImplementation.pointerDragged(CodenameOneImplementation.java:1845)
at com.codename1.impl.javase.JavaSEPort.access$1900(JavaSEPort.java:160)
at com.codename1.impl.javase.JavaSEPort$C.mouseDragged(JavaSEPort.java:957)
at java.awt.Component.processMouseMotionEvent(Component.java:6573)
at javax.swing.JComponent.processMouseMotionEvent(JComponent.java:3339)
at java.awt.Component.processEvent(Component.java:6294)
at java.awt.Container.processEvent(Container.java:2234)
at java.awt.Component.dispatchEventImpl(Component.java:4881)
at java.awt.Container.dispatchEventImpl(Container.java:2292)
at java.awt.Component.dispatchEvent(Component.java:4703)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4898)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4550)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4462)
at java.awt.Container.dispatchEventImpl(Container.java:2278)
at java.awt.Window.dispatchEventImpl(Window.java:2739)
at java.awt.Component.dispatchEvent(Component.java:4703)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:746)
at java.awt.EventQueue.access$400(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:697)
at java.awt.EventQueue$3.run(EventQueue.java:691)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.awt.EventQueue$4.run(EventQueue.java:719)
at java.awt.EventQueue$4.run(EventQueue.java:717)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:716)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
java.lang.ArrayIndexOutOfBoundsException: 1000
at com.codename1.ui.Display.addPointerEventWithTimestamp(Display.java:1676)
at com.codename1.ui.Display.pointerDragged(Display.java:1704)
at com.codename1.impl.CodenameOneImplementation.pointerDragged(CodenameOneImplementation.java:1957)
at com.codename1.impl.CodenameOneImplementation.pointerDragged(CodenameOneImplementation.java:1845)
at com.codename1.impl.javase.JavaSEPort.access$1900(JavaSEPort.java:160)
at com.codename1.impl.javase.JavaSEPort$C.mouseDragged(JavaSEPort.java:957)
at java.awt.Component.processMouseMotionEvent(Component.java:6573)
at javax.swing.JComponent.processMouseMotionEvent(JComponent.java:3339)
at java.awt.Component.processEvent(Component.java:6294)
at java.awt.Container.processEvent(Container.java:2234)
at java.awt.Component.dispatchEventImpl(Component.java:4881)
at java.awt.Container.dispatchEventImpl(Container.java:2292)
at java.awt.Component.dispatchEvent(Component.java:4703)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4898)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4550)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4462)
at java.awt.Container.dispatchEventImpl(Container.java:2278)
at java.awt.Window.dispatchEventImpl(Window.java:2739)
at java.awt.Component.dispatchEvent(Component.java:4703)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:746)
at java.awt.EventQueue.access$400(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:697)
at java.awt.EventQueue$3.run(EventQueue.java:691)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.awt.EventQueue$4.run(EventQueue.java:719)
at java.awt.EventQueue$4.run(EventQueue.java:717)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:716)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 1000
at com.codename1.ui.Display.addPointerEvent(Display.java:1637)
at com.codename1.ui.Display.pointerReleased(Display.java:1789)
at com.codename1.impl.CodenameOneImplementation.pointerReleased(CodenameOneImplementation.java:2123)
at com.codename1.impl.CodenameOneImplementation.pointerReleased(CodenameOneImplementation.java:1871)
at com.codename1.impl.javase.JavaSEPort.access$1600(JavaSEPort.java:160)
at com.codename1.impl.javase.JavaSEPort$C.mouseReleased(JavaSEPort.java:923)
at java.awt.Component.processMouseEvent(Component.java:6525)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
at java.awt.Component.processEvent(Component.java:6290)
at java.awt.Container.processEvent(Container.java:2234)
at java.awt.Component.dispatchEventImpl(Component.java:4881)
at java.awt.Container.dispatchEventImpl(Container.java:2292)
at java.awt.Component.dispatchEvent(Component.java:4703)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4898)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4533)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4462)
at java.awt.Container.dispatchEventImpl(Container.java:2278)
at java.awt.Window.dispatchEventImpl(Window.java:2739)
at java.awt.Component.dispatchEvent(Component.java:4703)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:746)
at java.awt.EventQueue.access$400(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:697)
at java.awt.EventQueue$3.run(EventQueue.java:691)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.awt.EventQueue$4.run(EventQueue.java:719)
at java.awt.EventQueue$4.run(EventQueue.java:717)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:716)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
我的代码:
int sizethumb = 0;
int sizethumb1 = 0;
if (responsesImg.size() > 0) {
sizethumb = largePlaceholder.getWidth();
sizethumb1 = largePlaceholder.getHeight();
findMainImg(f).setPreferredSize(new Dimension(sizethumb, sizethumb1));
findMainImg(f).getAllStyles().setBgImage(URLImage.createToStorage(largePlaceholder, newsImgFilename + "_0_ y", responsesImg.get(0).get("image_url"), URLImage.RESIZE_SCALE_TO_FILL));
mainImageImgViewer = null;
mainImageImgViewer = findMainImg(f).getUnselectedStyle().getBgImage();
}
if (responsesImg != null) {
if (responsesImg.size() > 1) {
sizethumb = thumbnail.getWidth();
sizethumb1 = thumbnail.getHeight();
findNewsThumbnail1(f).getAllStyles().setBgImage(URLImage.createToStorage(largePlaceholder, newsImgFilename + "_0_ x", responsesImg.get(1).get("image_url"), URLImage.RESIZE_SCALE_TO_FILL));
findNewsThumbnail1().setPreferredSize(new Dimension(sizethumb, sizethumb1));
thumbnail1 = null;
thumbnail1 = findNewsThumbnail1(f).getUnselectedStyle().getBgImage();
}
if (responsesImg.size() > 2) {
findNewsThumbnail2().setPreferredSize(new Dimension(sizethumb, sizethumb1));
System.out.println("thumbnail img " + responsesImg.get(2).get("image_url"));
findNewsThumbnail2(f).getAllStyles().setBgImage(URLImage.createToStorage(largePlaceholder, newsImgFilename + "_0_ w", responsesImg.get(2).get("image_url"), URLImage.RESIZE_SCALE_TO_FILL));
thumbnail2 = null;
thumbnail2 = findNewsThumbnail2(f).getUnselectedStyle().getBgImage();
} else if (responsesImg.size() == 0) {
System.out.println("null images");
}
}
我的连接:
class MR extends ConnectionRequest {
private Map<String, Object> resultsdata;
private Vector<Map<String, Object>> responses;
@Override
protected void readResponse(InputStream input) throws IOException {
JSONParser p = new JSONParser();
resultsdata = p.parse(new InputStreamReader(input));
responses = (Vector<Map<String, Object>>) resultsdata.get("root");
newsImageArray = new ArrayList();
for (int i = 0; i < responses.size(); i++) {
Hashtable hm = (Hashtable) responses.get(i);
newsDetailHome = (String) hm.get("details");
newsDateHome = (String) hm.get("date");
newsTimeHome = (String) hm.get("time");
newsTitleHome = (String) hm.get("title");
responsesImg = new Vector<>();
if (hm.get("photo").toString() != "[]") {
responsesImg = (Vector) hm.get("photo");
} else {
}
}
}
@Override
protected void handleErrorResponseCode(int code, String message) {
Dialog.show("Error msg", "The server returned the error code: " + code, "ok", null);
}
@Override
protected void handleException(Exception err) {
Dialog.show("Connection msg", "There was a connection error: " + err, "ok", null);
}
};
MR r = new MR();
r.setPost(false);
if (newsIdValueFromHome == null) {
r.setUrl("http://capitaleyedevelopment.com/~admin/traffic/api/news/getNewsDetails?news_id=" + newsIdValue);
} else {
r.setUrl("http://capitaleyedevelopment.com/~admin/traffic/api/news/getNewsDetails?news_id=" + newsIdValueFromHome);
}
r.setDuplicateSupported(true);
NetworkManager.getInstance().shutdownSync();
NetworkManager.getInstance().addToQueueAndWait(r);
EDT 检测
com.codename1.impl.javase.JavaSEPort$EDTViolation: EDT Violation Stack!
EDT violation detected!
Rendering frame took too long 344 milliseconds
Rendering frame took too long 156 milliseconds
at com.codename1.impl.javase.JavaSEPort.checkEDT(JavaSEPort.java:404)
at com.codename1.impl.javase.JavaSEPort.getImageWidth(JavaSEPort.java:3449)
at com.codename1.ui.Image.getWidth(Image.java:667)
at com.codename1.ui.EncodedImage.getWidth(EncodedImage.java:471)
at com.codename1.ui.URLImage$ScaleToFill.adaptImage(URLImage.java:81)
at com.codename1.ui.URLImage$DownloadCompleted.run(URLImage.java:159)
at com.codename1.ui.RunnableWrapper.run(RunnableWrapper.java:103)
at com.codename1.ui.RunnableWrapper.run(RunnableWrapper.java:140)
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:404)
at com.codename1.impl.javase.JavaSEPort.getImageHeight(JavaSEPort.java:3460)
at com.codename1.ui.Image.getHeight(Image.java:681)
at com.codename1.ui.Image.scaledLargerRatio(Image.java:877)
EDT violation detected!
at com.codename1.ui.URLImage$ScaleToFill.adaptImage(URLImage.java:82)
at com.codename1.ui.URLImage$DownloadCompleted.run(URLImage.java:159)
at com.codename1.ui.RunnableWrapper.run(RunnableWrapper.java:103)
at com.codename1.ui.RunnableWrapper.run(RunnableWrapper.java:140)
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:404)
at com.codename1.impl.javase.JavaSEPort.getImageWidth(JavaSEPort.java:3449)
at com.codename1.ui.Image.getWidth(Image.java:667)
at com.codename1.ui.Image.scaledLargerRatio(Image.java:878)
at com.codename1.ui.URLImage$ScaleToFill.adaptImage(URLImage.java:82)
at com.codename1.ui.URLImage$DownloadCompleted.run(URLImage.java:159)
at com.codename1.ui.RunnableWrapper.run(RunnableWrapper.java:103)
EDT violation detected!
at com.codename1.ui.RunnableWrapper.run(RunnableWrapper.java:140)
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:404)
at com.codename1.impl.javase.JavaSEPort.getImageWidth(JavaSEPort.java:3449)
at com.codename1.ui.Image.getWidth(Image.java:667)
at com.codename1.ui.Image.scaledLargerRatio(Image.java:882)
at com.codename1.ui.URLImage$ScaleToFill.adaptImage(URLImage.java:82)
at com.codename1.ui.URLImage$DownloadCompleted.run(URLImage.java:159)
at com.codename1.ui.RunnableWrapper.run(RunnableWrapper.java:103)
at com.codename1.ui.RunnableWrapper.run(RunnableWrapper.java:140)
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:404)
EDT violation detected!
at com.codename1.impl.javase.JavaSEPort.getImageHeight(JavaSEPort.java:3460)
at com.codename1.ui.Image.getHeight(Image.java:681)
at com.codename1.ui.Image.scaledLargerRatio(Image.java:882)
at com.codename1.ui.URLImage$ScaleToFill.adaptImage(URLImage.java:82)
at com.codename1.ui.URLImage$DownloadCompleted.run(URLImage.java:159)
at com.codename1.ui.RunnableWrapper.run(RunnableWrapper.java:103)
at com.codename1.ui.RunnableWrapper.run(RunnableWrapper.java:140)
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:404)
at com.codename1.impl.javase.JavaSEPort.scale(JavaSEPort.java:3479)
at com.codename1.ui.Image.scale(Image.java:961)
at com.codename1.ui.Image.scaledImpl(Image.java:931)
at com.codename1.ui.Image.scaled(Image.java:896)
那里有很多
代码,但不是全部,所以我不能真正评论。我确实注意到您每次都关闭网络,这是错误的。您应该只在非常极端的情况下调用关闭。
此异常报告我们的事件队列已完全满。这是一个疯狂的情况,只有当本机代码在 EDT 保持到位时不断发送事件时,才能达到它。在模拟器中打开 EDT 冲突检测工具,它可能会指向实际冲突。
要了解有关 EDT 的更多信息,请查看开发人员指南。