Сообщение Logcat: размер буфера по умолчанию, используемый в конструкторе BufferedInputStream. - PullRequest
2 голосов
/ 12 мая 2011

При выполнении моего проекта я получаю сообщение об ошибке, показанное ниже в logcat:

05-12 12: 43: 17.268: INFO / global (801): размер буфера по умолчанию, используемый в конструкторе BufferedInputStream. Было бы лучше быть явным, если требуется буфер 8 КБ.

Мой код показан ниже. Здесь данные, которые я передал в commonParser(), представляют собой длинный ответ, полученный от веб-служб.

public void commonParser(String data)
{
    try
    {
        if(data!=null)
        {
            InputStream is = new ByteArrayInputStream(data.getBytes());
            Reader reader = new InputStreamReader(is, "UTF-8");
            InputSource inputSource = new InputSource(reader);
            inputSource.setEncoding("UTF-8");
            SAXParser sp = SAXParserFactory.newInstance().newSAXParser();
            sp.parse(inputSource, this);
        }
    } catch (UnsupportedEncodingException e) {
        System.out.println("Common Parser Unsupported Encoding :: "+e);
    } catch (ParserConfigurationException e) {
        System.out.println("Parse Config error"+e);
    } catch (SAXException e) {
        System.out.println("Sax error "+e);
    } catch (IOException e) {
        System.out.println("IO Error "+e);
    }
}

Ответ logcat подсказывает мне, что я использую размер буфера 8 КБ, но я не знаю, как увеличить размер BufferedInputStream.

Ответы [ 2 ]

2 голосов
/ 25 апреля 2012

Вы можете попробовать изменить значение с InputStreamReader на BufferedReader Потому что вы уже устанавливаете кодировку на InputSource. Тогда вы можете установить размер буфера на 8192 (8k, что и предлагает Android) Таким образом, ваш код может выглядеть ...

InputStream is = new ByteArrayInputStream(data.getBytes());
// use BufferedInputStream instead of InputStreamReader
BufferedInputStream bis = new BufferedInputStream(is, 8192);
InputSource inputSource = new InputSource(bis);
inputSource.setEncoding("UTF-8");
SAXParser sp = SAXParserFactory.newInstance().newSAXParser();
sp.parse(inputSource, this);

...
0 голосов
/ 18 августа 2012

В вашем коде нет ничего плохого, сообщение не является ошибкой.Думайте об этом как о вашем FYI, информирующем вас о том, что вы можете указать размер буфера вместо использования по умолчанию 8k.Если меньший размер подходит, то вы можете сэкономить некоторое место в памяти, это все

. Вы можете игнорировать предупреждение, если 8KB окажется именно тем, что вам нужно, или вы можете отрегулировать размер с помощью конструктора, чтобы адаптировать его кваши потребности - настолько малые, насколько это возможно, настолько большие, насколько это необходимо.

...