Eu estava carregado a string na memória pois tinha que dar um replace em alguns caracteres antes de fazer o parser com o simplexml.
-- Mas testei aqui desta forma pedindo para ele ler direto do arquivo como o Rafael falou e funcionou.
Vou ter que dar o replace direto no servidor então.
Obrigado a todos.
Problema resolvido.
-----------------------------------
Att. Daniel N. Capelassi
Att. Daniel N. Capelassi
2013/8/30 Rafael Nobre Rocha <rafael.rocha@novaprolink.com.br>
Cara, não conheço a biblioteca, mas duvido MUITO que não tenha um método que processe Streams. Vc nao precisa converter pra uma baita String em memória pra isso. Olhei basicamente no site e tem um exemplo que usa File--Serializer serializer = new Persister(); File source = new File("example.xml"); Example example = serializer.read(Example.class, source);
Certamente tem outra forma que usa um Stream diretamente. Ou na pior das hipoteses salva o arquivo em disco e processa usando File. Não há a menor necessidade de carregar a String toda em memória, ainda por cima lendo linha a linha!Em quinta-feira, 29 de agosto de 2013 17h39min17s UTC-3, daniel.capelassi escreveu:Pessoal, eu baixo atravéz do meu app arquivo xml da internet de 3 mb. Depois pego o stream que baixei e tento converter ele para string, assim posso manipular o xml.O problema é que no meu celular Nexus ele consegue passar o stream para string.Já no meu celular antigo, LG p500 ele da erro "out of memory."Será que a memória é tão limitada assim que não consigo carregar 3 mb na memória ou estou fazendo alguma coisa errada?
Já tentei vários códigos para converter a inputStream baixada para string. Segue um exemplo que estou usando atualmente.InputStream is = ... stream baixado
BufferedReader reader = new BufferedReader(new InputStreamReader(is), 8192);
String line;
StringBuilder results = new StringBuilder("");while( ( line = reader.readLine() ) != null){
results.append(line);
}reader.close();
return results.toString();
Ele sempre da o erro no results.append(line); após processar um pouco.Estou fazendo o processo em uma asyncTask.Fiz um app separado só para baixar e passar por esta funcao, para assegurar que mais nadaestá ocupando a memória no app.Alguem pode me ajudar? Vlw.-----------------------------------
Att. Daniel N. CapelassiYou received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
0 comentários:
Postar um comentário