Linux mais bem sucedida da história Mais de um bilhão de aparelhos ativados Bilhões de downloads de aplicações via Google Play Avanços realmente significativos no campo da IoT
pilha específica de software Essa pilha de software é formada : Por diversos subsistemas desenvolvidos pelo próprio Google para o Android Por diversos projetos de código-aberto amplamente adotados pela indústria Eventualmente por componentes fechados (drivers), dependendo da combinação de versão do sistema e aparelho-alvo
aplicações não tem conhecimento ou acesso aos seus dados (a menos que compartilhados) Aplicações precisam de permissão do usuário para interagir com recursos específicos do sistema, acessar recursos de outras aplicações ou do hardware, dentre outros
uma JVM à risca (como Oracle Hotspot ou Azul Zing) Em sua primeira versão, DalvikVM foi o ambiente de execução construído com vistas à boa interoperabilidade com o SO Dalvik executa um bytecode específico, diferente do bytecode Java tradicional A partir do Android L, o ART será o ambiente de execução padrão
pelo Google em 2013 (Google IO) Aposenta o paradigma anterior de desenvolvimento, baseado em Eclipse, ADT Plugin e ANT Combina as capacidades de uma IDE já consolidada (IntellijIDEA) com uma novo sistema para construir as aplicações (Gradle) Todas as novas funcionalidades são oferecidas primeiramente (e potencialmente apenas) no Android Studio
de interesse, como o próprio sistema operacional, lojas online (Google Play, Amazon Store, AppBrain, etc) e outros Declarações sobre a estrutura da aplicação e seus componentes, permissões pedidas em tempo de instalação, funcionalidades exigidas (ex, OpenGL), dentre outros
interface de usuário e os eventos passíveis originados do SO aos quais a tela está sujeita Pode ser entendida como um CONTROLLER para a VIEWS com as quais o usuário interage, segundo o padrão MVC
Runtime Possui um ciclo de vida bem definido, de acordo com os eventos de interação do usuário (máquina de estados) Como programador, você não possui controle de qual estado uma Activity se encontra; mas você pode ser avisado das transições de interesse https://developer.android.com/reference/android/app/Activity.html
aplicação (estáticos) e o ambiente de execução (dinâmico) Pré-processador existente no SDK (AAPT) cria uma classe Java, formada por referências que indexam todos os recursos da aplicação Cada recurso é mapeado por uma constante inteira No código Java, recursos são acessados por suas referências!
sistema gerenciador de recursos do Android Extremamente poderoso e flexível Baseado em qualificadores e convenções Android determina em o recurso correto a ser utilizado em tempo de execução Repare que uma referência em R.java pode equivaler a mais de um recurso disponível !!!!
UI : estática e dinâmica A abordagem estática usa templates previamente construídos em arquivos XML (layout), que serão convertidos em Views em tempo de execução A abordagem dinâmica pressupõe que as Views são construídas em tempo de execução, programaticamente
disponíveis na API do Android (ou biblioteca de suporte) Definem a View de interesse em relação aos seus atributos e comportamentos Exemplos de ViewGroup : LinearLayout, RelativeLayout, ListView, e outros Exemplos de View simples : Button, TextView, ImageView e outros
aplicações Podem ser explícitos ou implícitos Para um Intent explícito, a própria mensagem contém a informação de qual componente é o alvo Para um Intent implícito, Android irá determinar em tempo de execução quais componentes estão aptos a responder a mensagem !!!
trocar de tela, pedindo para o Android iniciar uma nova Activity, através de um Intent Explícito Utilizamos outra aplicação para compartilhar algum conteúdo de interesse, como uma URL, através de um Intent Implícito
implementação da subclasse, adicionar o comportamento adaptador sobreescrevendo o método getView( ) (e outros quando necessário) Otimizar reusando convertView e implementando o padrão viewHolder