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).
S
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
E
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:
Ou seja, você faria uma requisição única, com os registros depois baixaria as imagens.
G
gustavo_apsilva
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
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.
H
Hebert_Coelho
gustavo_apsilva:
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
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.
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: