O documento discute técnicas para trabalhar com JSON no Android, incluindo bibliotecas como GSON, Jackson e implementações padrão. Também aborda tópicos como cache, performance e debug de aplicativos.
7. Justo
• Suporta as situações mais comuns
• Mas ainda achei meio lento
• Tem que ter o modelo compatível
8. Benchmarks
• Todos mentirosos :)
• https://github.com/eishay/jvm-serializers
• http://martinadamek.com/2011/01/31/comparison-
9. JACKSON
ObjectMapper mapper = new ObjectMapper();
TodosImoveis todosImoveis =
mapper.readValue(imoveisJSON,TodosImoveis.class);
10. • Suporta as situações mais comuns
• Mais fléxivel em relação ao mapeamento,
atributo ou getter/setter
• Realmente foi mais rápido.
11. Fallback esperto
@JsonAnySetter
public void handleUnknown(String key, Object value)
{
if (key.equals("fallback_url")) {
this.linkOriginal = value.toString();
}
}
12. try{
Modo hard
JsonFactory f = new JsonFactory();
JsonGenerator g = f.createJsonGenerator(new
StringWriter());
g.writeStartObject();
g.writeObjectFieldStart("imovel");
g.writeStringField("titulo","Casa de praia em
salvador");
g.writeStringField("descricao", "Joe");
g.writeEndObject(); // for field 'name'
g.close(); // important: will force flushing
of output, close underlying output stream
}
13. • Bem mais rápido
• Tem que ler na ordem dos campos do json
• Tudo braçal
33. LRUCache
final int memClass = ((ActivityManager) this
.getSystemService(Context.ACTIVITY_SERVICE)).getMemoryCl
ass();
int memoryInBytes = 1024 * 1024 * memClass;
final int cacheSize = memoryInBytes / 8;
cache = new LruCache<String,Bitmap>(maxSize);
42. Marca os pontos
public void buscaAPagina(int pagina) throws
LocationProvidersOffException{
Debug.startMethodTracing("buscaPagina");
//possivel código ruim aqui
Debug.stopMethodTracing();
}
43. Busca o arquivo
./adb pull /sdcard/buscaPagina.trace /tmp
./traceview /tmp/buscaPagina