Agenda. Overview do processo de boot Entendendo o processo Zygote Recursos reservados para a aplicação Android

Documentos relacionados
Android Core. Felipe Silveira felipesilveira.com.br. Aula 2

Android OLÁ MUNDO MÓVEL. Prof. Dr. Joaquim assunção.

Usando e Gerenciando Activities

TUTORIAL ANDROID ACTIVITY - CONSTRUÇÃO DE TELAS

ALOCAÇÃO DINÂMICA DE MEMÓRIA

Arquitecturas Alternativas. Java Virtual Machine

Especializado Desenvolvimento de Aplicações para Android

Prof: Ricardo Quintão Site:

Especializado Desenvolvimento de Aplicações para Android

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA RIO GRANDE DO NORTE

Curso online de Fundamentos em Android. Plano de Estudo

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS

Prof: Ricardo Quintão Site:

Programação JAVA para Android

Persistência. Prof. Alberto Costa Neto Linguagens de Programação. Departamento de Computação Universidade Federal de Sergipe

CONCEITOS BÁSICOS DE ORIENTAÇÃO A OBJETOS PROF. ME. HÉLIO ESPERIDIÃO

INF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS

UNIX Gerência de Memória

Questão 1. Nome para o arquivo fonte questao1.c

Android: Ciclo de vida da Activity

Programação para Dispositivos Móveis

Aula 07: - Mapa de memória de um processo - Ponteiros (parte 1)

Prof. Rogério Albuquerque de Almeida. Programação Orientada a Objetos II JAVA Décima Segunda Aula

MVM Mattos Virtual Machine. Andrey de Oliveira Prof. Mauro Marcelo Mattos, Doutor FURB 2012/2

Introdução ao Desenvolvimento para Dispositivos Móveis

UTILIZAÇÃO DA BIBLIOTECA DIMEPSAT PARA ANDROID

Computação II Orientação a Objetos

Discos. Hardware Tadeu Ferreira Oliveira -

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS

Por Bruno T Aquino, Roberto Luiz e Ricardo Vinicius Fabri, Abril 14, 2009.

Estruturas de Sistemas Operacionais

Descrição geral do Android

Programação para Dispositivos Móveis

Javascript por debaixo dos panos

Tutorial sobre Activity: Como carregar um fragmento do mapa para a tela do celular

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

MCTA028 Programação Estruturada Aula 07: - Mapa de memória de um processo - Ponteiros (parte 1)

Expectativa de respostas

SISTEMAS EMBARCADOS. Controle de Kernel, gerenciamento de Threads e funções de espera. Prof. André Schneider de Oliveira

CIÊNCIA DA COMPUTAÇÃO - LINGUAGEM DE PROGRAMAÇÃO II REVISÃO POO

LISTA DE EXERCÍCIOS Prof. Daniel de Souza Gomes Aula extra 26/03/2011

Curso: Especializado Desenvolvimento de Aplicações para Android

- Mapa de memória de um processo - Ponteiros

API JDBC. Paulo Ricardo Lisboa de Almeida. 1 Universidade Positivo

Aplicações em CUDA. Medialab Instituto de Computação Universidade Federal Fluminense NVIDIA CUDA Research Center

Chamadas de Sistema (SYSCALL)

Desenvolva de qualquer sistema operacional para qualquer sistema operacional. Sem limites.

Sistemas Operacionais

Um Modelo Semântico para a Linguagem Java Jorge Henrique Cabral Fernandes CIC-UnB Junho de Introdução

UNIVERSIDADE FEDERAL RURAL DE PERNAMBUCO Bacharelado em Sistemas de Informação. Processamento Paralelo Threads. Aluno: Wagner Palacio

Linguagens de Programação Classificação

Arquiteturas de Computadores. Princípios e exemplos de conjuntos de instruções

Aula 01. Prof. Diemesleno Souza Carvalho

Processo. Gerência de Processos. Um programa em execução. Centro de Informática/UFPE :: Infraestrutura de Software

Noçõ linguagem Java. Profs. Marcel Hugo e Jomi Fred Hübner. Departamento de Sistemas e Computação Universidade Regional de Blumenau - FURB

Exercícios. Alocação Dinâmica. Alocação dinâmica de memória. Alocação de memória. Alocação da Memória Principal. Alocação da Memória Principal

DESENVOLVIMENTO PARA DISPOSITIVOS MÓVEIS. PROFª. M.Sc. JULIANA H Q BENACCHIO

Processo. Gerência de Processos. Um programa em execução. Centro de Informática/UFPE :: Infraestrutura de Software

MCTA001 Algoritmos e Estruturas de Dados I Aula 02: Ponteiros e estruturas

Universidade Federal do Paraná

Lista de Exercícios da disciplina Aplicações de Linguagem de Programação Orientada a objetos

Compilação dos trabalhos: questões de concurso

Linguagem de Programação Orientada a Objeto Construtores e Sobrecarga

Gerência de Memória. Sistemas Operacionais Flavio Figueiredo (

Estrutura de Dados. Aula 07 Alocação Dinâmica

Sistemas Operativos. Gestão de memória no Windows NT

Criando o primeiro projeto para entender a estrutura do app

Programação de Computadores II TCC /Turma A 1

Manipulação de Bytecode Java

Singularity. Sistema operacional construído do zero com o objetivo principal de ser seguro. Alex de Magalhães Machado

Algoritmos e Técnicas de Programação. Professora Luciana Faria

Introdução aos Sistemas Operacionais. Subsistema de Arquivos

Java Standard Edition (JSE)

EA998/MC933 Guido Araujo e Sandro Rigo

1. Faça um programa que leia uma string digitada pelo usuário e salve em um arquivo em branco.

Programação Estruturada Prof. Rodrigo Hausen Organização e Gerenciamento de Memória

Informática Sistemas Operacionais Aula 5. Cleverton Hentz

Unix Processos. Geraldo Braz Junior

Introdução ao Desenvolvimento de Aplicativos Android

Programação com Sockets

Exercício. Alocação Dinâmica. Alocação dinâmica de memória. Alocação de memória. Alocação da Memória Principal. Alocação da Memória Principal

Alocação Dinâmica em C

VIRTUALIZAÇÃO CORPORATIVA

Guia do f12 F12. Developer Tools. Leonardo Tegon

Agenda da Aula. Reuso de Software. Tipos de Reuso. Potenciais Problemas. Vantagens de Reuso. Introdução a Reuso de Software

Introdução Dalvik Linux 2.6. Android. Diogo de Campos, João Paulo Pizani Flor, Maurício Oliveira Haensch, Pedro Covolan Bachiega

Comandos TOP, PS e PSTREE

Collections Framework

Windows NT 4.0. Centro de Computação

Prof. Jhonatan Fernando

Desenvolvimento Android. Pontapé inicial...

FRAMEWORK PARA GERENCIAMENTO E DISPONIBILIZAÇÃO DE INFORMAÇÕES MULTIMÍDIA GEOLOCALIZADAS NA PLATAFORMA ANDROID

Laboratório de Ciências Computação

Roteiro 20/9/2010. Serviço do sistema operacional. Interface. Chamadas de sistemas (System Call) Programas do sistema Projeto e Implementação

AULA 3. Minicurso PET-EE UFRN

Desenvolvimento para dispositivos móveis JavaME

Introdução aos Sistemas Operacionais. Subsistema de Entrada e Saída

USP - ICMC - SSC SSC o. Semestre 2010 Disciplina de Introdução à Ciência da Computação ICC 1 - Teoria

A melhor plataforma aberta para redes sociais. Gustavo Caldeira Consultor em arquitetura de sistemas e web social caldeira.santos@gmail.

Transcrição:

Agenda Overview do processo de boot Entendendo o processo Zygote Recursos reservados para a aplicação Android Binders Gerenciamento de memória no Android Garbage Collector Causa de referências perdidas Cuidados com Bitmaps

Agenda Performance em layouts ViewStub, include, merge Main Thread Tipos de problema Ferramentas Demo

Overview do processo de boot

Processo de boot

Processo de boot Init O init tem a responsabilidade de inicializar parte do sistema e rodar o init.rc que carregará parte do sistema Android, dentre eles:. - ser vice m an ager: ini cia o binder (respon sável pela comu ni cação entre os processos). - vold: vol ume dae mon con trola a mon tagem de volumes de mídia no sis tema de arquivos. - adbd: android debug ger bridge dae mon servi dor para comu nicação com o cliente adb. - installd: servi dor de insta lação de pacotes/aplicações (*. apk). - Zygote: O zygote é o pai de todos os proces sos Java. OBS: O init.rc é escrito em uma linguagem chamada Android Init Language que é composta por Ações, Comandos, Serviços e opções. service zygote /system/bin/app_process -Xzygote /system/bin --zygote --start-system-server

BINDER

BINDER PROCESS A PROCESS B USER DATA USER DATA Transmission Binder Protocol BC_TRANSACTION Reception Binder Protocol BR_TRANSACTION BINDER DRIVER KERNEL SPACE

BINDER

RECURSOS

Recursos RELÓGIO CELULAR - SMALL CELULAR - LARGE CELULAR - XLARGE 32-154 MB 32-256 MB 32-512 MB 48-768 MB BINDER 1 MB https://developer.android.com/reference/android/os/transactiontoolargeexception.html https://source.android.com/compatibility/android-cdd.html

GERENCIAMENTO DE MEMÓRIA

Garbage Collector

Gerenciamento de memória Causa de referências perdidas na heap Caso 1: String mystring = new String("Hello World") mystring += ", blz?" FIX - Caso 1: Trocar String por StringBuffer/StringBuilder Caso 2: public interface EventListener<EventResponseType> { public void onevent(eventresponsetype response); }

Gerenciamento de memória Causa de referências perdidas na heap Caso 2: public void onresume() { super.onresume(); } SomeObject object = new SomeObject(); object.setsuccesslistener(new EventListener<Boolean>() { public void onevent(boolean response) { Log.d(TAG_NAME, "Valid response? "+response); } }); SomeObjectManager.getSingleton().addObject(object);

Gerenciamento de memória Causa de referências perdidas na heap FIX - Caso 2: public void ondestroy() { super.ondestroy(); SomeObject objectfrombefore = SomeObjectManager.getSingleton().getOurObject(); objectfrombefore.setsuccesslistener(null); }

Gerenciamento de memória Libere memória sempre que possível Callback da activity que o framework do android irá chamar para notificar sobre o estado da memória da app. - ontrimmemory() (Android API 14+); - onlowmemory() (Android API anteriores a 14 ); - Para ambos os casos a flag TRIM_MEMORY_UI_HIDDEN será entregue; - onstop ainda deve ser usado para liberar recursos;

Gerenciamento de memória Verifique quanto de memória está disponível antes de fazer grandes alocações Verifica o espaço de memória da pilha - Runtime.getRuntime().totalMemory(); Verifica quanto de memória já foi consumido - Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory(); Verifica o tamanho máximo da pilha - Runtime.getRuntime().maxMemory()

Gerenciamento de memória Como otimizar o Bitmap em memória

Gerenciamento de memória Como otimizar o Bitmap em memória

Gerenciamento de memória Resultado Considerando que eu tenho uma imagem 2048x1536 com um insamplesize de 4 eu teria uma imagem de 512x384. Aplicando a formula abaixo eu passaria a carregar em memória ao invés de 12MB uma imagem de 0.75 MB. # Of Pixels X Bit Depth bytes per pixel 1024 1024 = File Size in Megabytes (MB) # Of Pixels = 512x384 == 196608 # Of bit depth == 16 (Considerando uma boa qualidade) (((((512 * 384) * 16) / 4) / 1024) / 1024) -> 0.75 MB * O resultado acima é baseado em um bitmap ARGB_8888

Performance em layouts

Performance em layouts ViewStub - Carrega views por demanda o que faz o layout da tela principal ser carregada de forma mais rápida

Performance em layouts <include> - Use include quando se tem layout complexo que pode ser reutilizado. Isso ajudará a evitar multiplas telas idênticas com complexidades diferentes. <merge> - O Uso do merge faz com que elementos raiz redundantes sejam inseridos na hierarquia.

Main Thread

Main Thread

Tipos de problemas

Tipos de Problemas - OutOfMemoryError - TransactionTooLargeException - Android not responding (ANR) - Force close - Delay na exibição e execução de tarefas - Database corrompido - Review ruim na play store OBS: Apenas seguindo algumas boas práticas do android uma série de problemas podem ser evitados e consequentemente dores de cabeça. :P

FERRAMENTAS

Ferramentas Hierarchy View

Ferramentas Device Monitor

Ferramentas Device Monitor - Android Studio

Ferramentas TraceView - Timeline

Ferramentas TraceView - Profile

Ferramentas Android Lint

DEMO

Demo Objetivo Dado uma sequência de números inteiros em um array mova os zeros para o final do array.

Demo Resultado - Método um ( O(nˆ2) ) leva muito mais tempo - Método dois ( O(n) ) é extremamente rápido comparado com o método um

Obrigado! Wagner Batista wbatista@ciandt.com