2016-02-09 2 views
1

Я использовал infinteScrollAdapter с connectionRequest из json для заполнения компонентов, но когда-то он дает следующую ошибку, в то время как она обычно работает хорошо. В чем проблема? Если я запускаю снова работает нормально, но она висит иногда в течение довольно длительного времени, а затем показать эту ошибкуПроизводительность EDT очень медленная ошибка запуска показана

[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); 

Detection 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) 
+0

Можете ли вы разместить код для загрузки содержимого? Это вызвано исключением 'ArrayIndexOutOfBoundsException'. – Diamond

+0

Я обновил выше – beck

+0

Извините, я имел в виду ваш код 'InfiniteScrollAdapter'. – Diamond

ответ

0

Существует много кода там, но его не все, поэтому я не могу прокомментировать это. Я заметил, что вы выключаете сеть каждый раз, когда это неправильно. Вы должны только вызывать выключение в очень экстремальных случаях.

Это исключение сообщает, что наша очередь событий полностью заполнена. Это безумная ситуация для достижения, и ее можно достичь, только если родной код продолжает отправлять события, пока EDT удерживается на месте. Включите инструмент обнаружения нарушения EDT в симуляторе, и он, вероятно, укажет на фактическое нарушение.

Чтобы узнать больше об EDT, зайдите в developer guide.

+0

Когда я устанавливаю EDT полностью, он обнаруживает множество исключений, но не определенные строки. Как я могу решить проблему? Я обновил исключения EDT выше. – beck

+0

Отпечатывает трассировки стека, которые должны содержать номера строк, указывающие на ваш код. Если они неясны, я предлагаю опубликовать часть этого вывода в качестве последующего вопроса. –

+0

Я уже обновил трассировку стека выше. Строка №. показанный в точке трассировки стека на строки, которые не имеют никакого смысла, как в комментариях, фигурных скобках или кодах, которые не имеют ничего общего с формой, имеющей проблему. – beck

Смежные вопросы