когда я использую FailSilently + codenameone, запросы на изображения вызывают несколько раз - PullRequest
0 голосов
/ 01 сентября 2018

Это может звучать расплывчато. Но недавно я начал замечать запросы, которые вызываются неоднократно из мобильного приложения. Это раньше не случалось. Я хотел бы знать, когда это произойдет, если возникнет проблема с кодом сервера или мобильного приложения?

public Image fetchLogoImage (String app) { пытаться { final String u = FileSystemStorage.getInstance (). getAppHomePath () + "Logo-" + app; if (FileSystemStorage.getInstance (). exist (u)) { int length = (int) FileSystemStorage.getInstance (). getLength (u); setLogo (EncodedImage.create (FileSystemStorage.getInstance (). openInputStream (u), length)); return getLogo ();

        }
        class ImageRequest extends ConnectionRequest {

            public EncodedImage img;

            public ImageRequest() {
                super(getLogoImageURL(app), false);
                setFailSilently(true);
            }

            @Override
            protected void readResponse(InputStream input) throws IOException {
                try {
                    JSONParser jp = new JSONParser();
                    Map<String, Object> hm = jp.parseJSON(new InputStreamReader(input, "UTF-8"));
                    if (!hm.isEmpty()) {
                        byte[] data = Base64.decode(((String) hm.get("FileContent")).getBytes());
                        img = EncodedImage.create(data);
                        OutputStream os = FileSystemStorage.getInstance().openOutputStream(u);
                        os.write(data);
                        os.close();
                    }
                } catch (IndexOutOfBoundsException ex) {
                    Log.p("Wrong Application Name");
                }
            }
        }
        ImageRequest c = new ImageRequest();
        NetworkManager.getInstance().addToQueueAndWait(c);
        if (c.img != null) {
            setLogo(c.img);
        }
        return c.img;
    } catch (IOException err) {
        Log.e(err);
        return null;
    }
}

Спасибо

1 Ответ

0 голосов
/ 01 сентября 2018

Это не связано с отказом в режиме без вывода сообщений, это связано с повторением без вывода сообщений, которое по умолчанию равно 1 на некоторых платформах. Вы можете отключить автоматические попытки через setSilentRetryCount(0).

...