Seguinte, eu tenho uma aplicação Android que se comunica com um web service, que por sua vez, retorna um JSON toda vez que é solicitado. Uma das APIs do WS retorna um JSON que tem como atributo os bytes de várias images. Na verdade, cada registro da tabela onde eu busco essas informções possui 2 imagens. Eu fiz uma chamada no WS que retornou apenas 2 registros do banco, ou seja 4 imagens. O JSON ficou enorme. O arquivo fica com mais ou menos 100 Kb. Isso porque foram só 2 registros. Mas em um cenário real pode ser que sejam 10, 20, 30, etc. E como é uma aplicação mobile ficaria pesado.
Alguém sabe alguma forma de melhorar esse retorno? Ou não tem muito o que fazer mesmo?
Nunca retorne imagens via JSON, já que você somente vai transformar os bytes em texto, e isso vai gerar um tráfego enorme de rede mesmo.
Em vez de retornar a imagem, retorne o path para que a aplicação possa baixar ela via HTTP (se possível em background).
Entendi. Mas tipo, logo que o usuário acessa o aplicativo eu já mostro uma lista de registros e cada item possui uma imagem. Então eu teria que carregar todas as imagens antes para depois mostrar a tela para o usuário. Se eu tiver 30 registros eu vou ter que fazer 30 chamadas http para buscas as 30 imagens. Não ficaria lento?
Particularmente eu retornaria uma lista com os elementos, por exemplo, uma aplicação que o usuário queira listar produtos por descrição ou algo do gênero, eu retornaria da seguinte forma:
[quote=Schoker]Entendi. Mas tipo, logo que o usuário acessa o aplicativo eu já mostro uma lista de registros e cada item possui uma imagem. Então eu teria que carregar todas as imagens antes para depois mostrar a tela para o usuário. Se eu tiver 30 registros eu vou ter que fazer 30 chamadas http para buscas as 30 imagens. Não ficaria lento?
[]'s[/quote]
Dependendo da situação, você poderia utilizar a boa e velha servet, onde você passaria um único parametro e receberia um stream contendo um arquivo ZIP com todas as imagens necessárias.
Se para você for importante mostrar todas as imagens de uma vez, talvez seja uma solução.
[quote=gustavo_apsilva][quote=Schoker]Entendi. Mas tipo, logo que o usuário acessa o aplicativo eu já mostro uma lista de registros e cada item possui uma imagem. Então eu teria que carregar todas as imagens antes para depois mostrar a tela para o usuário. Se eu tiver 30 registros eu vou ter que fazer 30 chamadas http para buscas as 30 imagens. Não ficaria lento?
[]'s[/quote]
Dependendo da situação, você poderia utilizar a boa e velha servet, onde você passaria um único parametro e receberia um stream contendo um arquivo ZIP com todas as imagens necessárias.
Se para você for importante mostrar todas as imagens de uma vez, talvez seja uma solução.[/quote]
[quote=ederfreitas]Particularmente eu retornaria uma lista com os elementos, por exemplo, uma aplicação que o usuário queira listar produtos por descrição ou algo do gênero, eu retornaria da seguinte forma: