Este artigo é patrocinado por: «A sua instituição aqui» |
Activity
É uma classe gerenciadora de UI (Interface com o utilizador), ou seja, é aqui elaborado todos os componentes de interação visual de uma aplicação.
Pode-se assim compreender que esta detém um ciclo de vida e cada fase deste ciclo possui as suas próprias funções e características.
Ciclo de vida de uma Activity
No Android, as activity contam com um conjunto de métodos “callback methods”, que são métodos invocados no início de uma activity para a construção lógica de aplicações.
Esses métodos “callback methods” são chamados criando uma certa sequência de um ciclo, que é denominado por ciclo de vida de uma activity, como ilustrado no diagrama apresentado a seguir na fig.1 o ciclo de vida de uma Activity e os métodos “callback methods” (onStart, onPause, etc) que são chamados quando há uma ocorrência de cada uma das condições que lhes precedem e a ordem pela qual são chamados.
Quando é iniciada uma aplicação no dispositivo, os métodos são chamados na seguinte sequência:
- onCreate(Bundle SavedInstanceState): O método onCreate() é o primeiro a ser chamado quando a atividade é criada pela primeira vez e executada somente uma vez durante o ciclo de vida, seguido por onStart().
- onStart(): O método onStart() é chamado quando a atividade está a tornar-se visível para o utilizador. Utiliza-se o onResume() se a atividade vai para o primeiro plano, ou onStop() quando não está visível.
- onRestart(): O método onRestart() é chamado quando uma atividade é interrompida por algum motivo, sendo executado o método onStart() de uma forma automática.
- onResume(): Este método é chamado quando a atividade começa a interagir com o utilizador, declarando assim que a atividade está no topo da pilha de atividades. Este método conta com o método onPause() para iniciar os componentes ou recursos libertados durante o onPause().
- onPause(): Este método é chamado quando o sistema está prestes a retomar a atividade anterior que ficou parcialmente por detrás de uma outra atividade que o utilizador esteja a utilizar. Normalmente é utilizado para libertar recursos que não estão a ser utilizados indicando assim que o utilizador pode não voltar mais para a aplicação. Segue-se pelo onResume().
- onStop(): Este método é chamado quando a atividade não está visível para o utilizador devido a encerramento da atividade ou mudança da aplicação. A invocação deste método também indica de que o utilizador não voltará para a atividade, sendo necessário a libertação dos recursos que não são mais necessários. Se a atividade voltar a ser interagida pelo utilizador segue-se pelo método onRestart(), caso contrário, se for terminada segue-se pelo método onDestroy().
- onDestroy(): Este método é chamado no último momento da atividade em que é destruída da memória. Este método é invocado no caso de uma atividade estar parada por muito tempo e por uma questão de gestão de recursos, o sistema elimina a atividade da memória para a utilização por outros processos.
Service
Como sugere o nome é um serviço. Esta classe é responsável por efetuar tarefas demoradas, em segundo plano, sem que seja necessário a intervenção por parte do utilizador.
Broadcast Receiver
Transmissão de mensagens de outras aplicações ou do próprio sistema, onde estas mensagens muitas das vezes são chamadas de eventos ou intenções.
Exemplificando eventos enviados pelo sistema operativo podem ser mudança da hora atual, alteração do estado da bateria, alterações das condições de conetividade, entre outros. A nível de aplicação será realizada uma notificação quando é feito o download de um arquivo MP3.
Content Provider
É responsável por fornecer o conteúdo de uma aplicação a outras aplicações instaladas no sistema operativo. Um exemplo é a aplicação de Contatos presente nos terminais Android, onde esta aplicação fornece um Content Provider para que outras aplicações tenham acesso aos contatos guardados no dispositivo.
Estrutura de um projeto android
A estrutura dos diretórios do projeto é o local onde o utilizador poderá ver os códigos fonte, os arquivos de layout, binários, figuras padrões da aplicação e também arquivos de configuração, sendo também possível adicionar novos arquivos ao projeto.
A estrutura mais simples está sob o separador Android, onde é apresentada a seguir na Figura 2.
app (Application)
Inclui todos os arquivos principais da aplicação, tais como códigos de classes em java, arquivos XML para design da interface gráfica, configurações, ícones entre outros.
manifests
O arquivo AndroidManifest.xml é o arquivo principal do projeto, deve ficar obrigatoriamente na pasta raiz do projeto, onde contém informações vitais das aplicações, como identificadores, as definições das atividades (activities), serviços (services), recetores de transmissão (broadcast receivers), fornecedores de conteúdo (content providers), permissões, compatibilidade com outras versões de Android entre outras configurações.
Exemplo de arquivo AndroidManifest.xml da aplicação “HelloWorld” criado anteriormente.
Este ficheiro é composto pela tag <manifest> onde é necessário declarar o pacote principal do projeto fazendo uso da tag <package> em que este atributo é o package name que foi atribuído à aplicação quando esta foi criada.
É obrigatório que cada Activity do projeto esteja declarada no arquivo AndroidManifest.xml, caso contrário não será possível a sua utilização.
Para declarar a activity é usada a tag <activity>, em que esta recebe o nome da classe, sendo relativa ao pacote principal. O projeto pode conter uma, várias ou nenhuma activity, o importante é que todas as activitys usadas no projeto devem estar declaradas no AndroidManifest.xml, caso contrário será recebido uma mensagem de erro na execução da aplicação.
Dentro da tag <manifest> podem existir várias tags, algumas obrigatórias e outras opcionais, no entanto sofrem constantes mudanças devido às novas versões do Android, sendo possível encontrar atributos mais atual no seguinte endereço:
http://developer.android.com/guide/topics/manifest/manifest-intro.html
java
Observa-se que dentro da pasta java existe dois pacotes tendo eles o mesmo nome, mas funções diferentes, o primeiro pacote é o local de armazenamento das classes Java para as funcionalidades da aplicação e o segundo é para testes, onde dentro dele existe uma classe chamada ApplicationTest.java, onde é exemplificado na Figura 4.
res (resources)
Diretório com recursos utilizados pela aplicação, como música, sons, imagens, o ícone da aplicação, arquivos XML que definem o layout das atividades, os menus, para além de valores relacionados a elementos de texto e dimensões da atividade em que a aplicação suporta.
drawable
A única finalidade do diretório drawable é armazenar imagens que serão visualizadas na aplicação.
layout
Aqui são armazenados normalmente os arquivos .xml que definem o layout da aplicação.
menu
Responsável por gerir e exibir os itens do menu da aplicação.
mipmap
A caraterística deste diretório é idêntica a do diretório drawable, no entanto aqui é armazenada imagens referentes ao ícone da aplicação.
values
Um dos recursos permitidos em Android é o uso de constantes, ou seja é possível armazenas valores fixos que estão presentes em grande parte da aplicação.
Imaginemos que o título da aplicação está em todas as atividades, desta forma não é necessário escrever o título manualmente, ou se por acaso é necessário alterar o título, é muito trabalhoso ter que alterar manualmente em todas as atividades, desta forma é só alterar a constante.
- strings.xml: guarda as constantes da aplicação como nome da aplicação, título, entre outros.
- dimens.xml: guarda constantes em ralação às dimensões.
- styles.xml: guarda as constantes em relação a estilos.
- colors.xml: guarda as contantes em relação a cores.
A estrutura de diretórios do projeto que será armazenada no disco rígido, sendo esta a mais importante, está sob o separador Project, onde é apresentada a seguir na figura 5.
HelloWorld
Nome do Projeto, sendo também o mesmo nome do diretório.
.idea
Pasta com arquivos de configuração da IDE, contém os arquivos utilizados internamente pela IDE.
build
Classes compiladas, relatórios de compilação e todos os arquivos gerados durante a transformação do projeto em uma aplicação.
libs
Pasta com as libs para armazenamento de novas bibliotecas ou arquivos *.jar.
src
Onde são armazenados arquivos de código do projeto, classes Java, drawables, xml, layouts, values e AndroidManifest.xml
app.iml
Arquivo de configuração da aplicação, sendo este herdado da infraestrutura do IntelliJ.
build.gradle
Arquivo build.gradle para a aplicação contém as configurações de compilação do módulo, como versão mínima, build types, empacotamento e outras DSLs em Groovy.
gradle
Contém um importante arquivo chamado gradle-wrapper, que será usado na construção do APK, na qual garante que o projeto será construído com a versão correta do Gradle.
build.gradle
Arquivo build.gradle do projeto contém informações gerais do projeto, tais como dependências, repositórios, etc.
HelloWorld.iml
Arquivo de configuração do projeto, sendo este herdado da infraestrutura do IntelliJ.
gradle.properties
Arquivo de propriedades do Gradle, onde contém configurações específicas para o Gradle.
gradlew
Script para execução do Gradle.
local.properties
Arquivo de informações locais (SDK).
External Libraries
Lista de bibliotecas externas do projeto (SDK, JDK, etc).
Para mais informações sobre a estrutura de um projeto Android:
http://developer.android.com/intl/pt-br/tools/projects/index.html