Arquitetura móvel para diferentes contextos

Preview:

Citation preview

Arquitetura móvel para diferentes contextosMarcelo Quinta

@mrquinta

https://autosorfaos.wordpress.com/2010/08/10/ford-corcel-ii-7/

CONTEXTO

Quem é seu usuário?

“Se quiser saber o que seu usuário quer, não pergunte a ele. Veja como ele se comporta.”

Não lembro quem me disse isso

“Onde tem gambiarra, tem oportunidade”

Júlio Souza (Projeto Redação)

Google Analytics

Fabric

Contexto da tecnologia

SO

PROCESSOS

BORA RESOLVER

Nosso escopo será este

Conexão Web

Evitar múltiplas requisições repetidas (e também dar sincronia a estas quando não tiver opção)

Requisição com lista infinita de acordo com a rede

Wifi

Requisição com lista infinita de acordo com a rede

4G

Requisição com lista infinita de acordo com a rede

2G

Verificando a conexão

ConnectivityManager networkManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);NetworkInfo info = networkManager.getActiveNetworkInfo();int type = info.getType();int type = info.getSubtype();

Personalize os tempos de resposta!

Erro? Não mostre uma tela vazia

https://github.com/xiprox/ErrorView

Flat Buffers

https://google.github.io/flatbuffers/index.html

Flat Buffers

https://google.github.io/flatbuffers/index.html

Sem polling

Diga ao servidor quem você é (ou peça a pessoa do back-end dar moral pra isso)

User-Agent

Imageria

Se pode fazer um drawable em XML ou SVG, faça

https://developer.android.com/intl/pt-br/guide/appendix/media-formats.html

Use imagens com cuidado

https://github.com/EverythingMe/webp-android

http://www.html5rocks.com/en/tutorials/speed/img-compression/

Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView);

Envie a imagem adequada

Original: 969Kb Formato JPG

Comprimida em qualidade: 317Kb Formato JPG

Outras opções ainda melhores

Original: 20Kb Formato WebP

Qualidade e tamanho otimizados : 25Kb Formato JPG

Tudo junto

Gerando uma nova imagem

Bitmap bmResolution = Bitmap.createBitmap(croppedImage, 0, 0, width, height, matrix, true);

ByteArrayOutputStream out = new ByteArrayOutputStream();...bmResolution.compress(Bitmap.CompressFormat.JPEG, 90, out);Bitmap decoded = BitmapFactory.decodeStream(new ByteArrayInputStream(out.toByteArray()));

Mídias suportadas

https://developer.android.com/guide/appendix/media-formats.html#core

Segurança

OAuth, MD5 checking, HTTPS, SSL?

Allow backup: true ou false?

Localização

GPS somente quando necessário

Armazenamento

Proguard nele! Cuidado com webviews e bibliotecas

UI

Xinglings estão ficando cada dia mais doidos

Material Design Support Library

Material Design Support Library

Cursos do Udacity que fiz e indico

Android Performance

https://www.udacity.com/course/android-performance--ud825

UX Design for Mobile developers

https://www.udacity.com/course/ux-design-for-mobile-developers--ud849

Advanced Android App Development

https://www.udacity.com/course/advanced-android-app-development--ud855

Developing Android Apps https://www.udacity.com/course/developing-android-apps--ud853

Palestra interessante para assistir Building for billions on Android - Google I/O 2016

https://www.youtube.com/watch?v=vaEV8bNi1Dw

Indicação de leitura

Venha bater um papo com a gente

Google Developer Experts

Marcelo Quinta@mrquinta

Obrigado

Muito dessa apt foi feito com material disponibilizado pelo Google. Dê uma olhada no canal do Youtube deles: https://www.youtube.com/user/GoogleDevelopers

Recommended