Buscar

Desenvolvimento para Dispositivos Móveis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 271 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 271 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 271 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

DESENVOLVIMENTO 
PARA DISPOSITIVOS 
MÓVEIS 
Diego Bittencourt de Oliveira
Introdução ao 
desenvolvimento para 
dispositivos móveis
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
 � Identificar os diferentes tipos de dispositivos móveis e sistemas 
operacionais.
 � Descrever as principais características de dispositivos móveis e seus 
sistemas operacionais.
 � Relacionar os tipos de dispositivos móveis e seus sistemas operacionais 
com sua posição no mercado.
Introdução
Os dispositivos móveis fazem parte do nosso dia a dia e os utilizamos cada 
vez mais como ferramenta, tanto para uso pessoal quanto profissional. 
Um dispositivo dito móvel possui uma série de peculiaridades que lhe 
fornecem essa mobilidade e assim o classificam. Um componente de 
suma importância em dispositivos móveis é o sistema operacional, que é 
como um cérebro que gerencia o dispositivo, fornecendo, por intermédio 
deste, as ferramentas que o usuário necessita para o seu dia a dia.
Neste capítulo, vamos identificar e descrever as principais carac-
terísticas dos dispositivos móveis e seus sistemas operacionais. Além 
disso, vamos realizar uma análise da posição de mercado de diferentes 
dispositivos móveis.
Dispositivos e sistemas operacionais móveis
Segundo Lee, Schneider e Schell (2005), a mobilidade pode ser definida 
como a capacidade de poder se deslocar ou ser deslocado de forma fácil. Em 
computação móvel, mobilidade se refere ao uso de dispositivos portáteis que 
oferecem a capacidade de realizar, com facilidade, um conjunto de funções 
de aplicação, como conexão, obtenção e fornecimento de dados a outros 
usuários e uso de aplicações e sistemas. Dessa forma, podemos classificar 
como dispositivos móveis:
 � telefones celulares;
 � laptop;
 � smartphones;
 � tablets;
 � robôs.
Tipos de dispositivos móveis
Atualmente, dispomos no mercado diversos tipos de dispositivos móveis, 
tanto para o uso corporativo quando para o uso pessoal de consumidores em 
geral. As capacidades intrínsecas, a funcionalidade, a portabilidade e o custo 
de cada um destes variam de forma significativa. 
Lee, Schneider e Schell (2005) relatam que os smartphones, a evolução dos 
telefones celulares, são os dispositivos mais populares na contemporaneidade. 
Os telefones celulares inicialmente contavam com funcionalidades que hoje 
em dia são consideradas básicas, como a capacidade de realizar ligações 
telefônicas e enviar mensagens do tipo SMS. Alguns telefones celulares dis-
punham de alguns jogos considerados básicos, dada a baixa resolução da tela 
(128 × 128 pixels).
O telefone celular possui display pequeno e botões de discagem, já o 
smartphone é um pouco maior, possuindo display colorido com excelente 
resolução e praticamente não tem botões (normalmente os poucos botões 
existentes se encontram nas partes laterais, para ligar e desligar o aparelho, 
além de controlar o volume do som). Para digitar um número de telefone ou 
um texto em um smartphone, um teclado é projetado na tela e, a partir desta 
tela sensível ao toque (touchscreen), os botões que o usuário está pressionando 
são identificados pelo aparelho. 
Introdução ao desenvolvimento para dispositivos móveis2
Os smartphones atuais incorporam mais funcionalidades em relação aos 
telefones celulares. Na listagem abaixo, podemos observar algumas dessas 
principais características.
 � Tela de alta resolução: permite uma experiência de visualização tão 
boa quanto as encontradas em computadores, que não possuem as 
limitações que um smartphone possui. Além disso, ainda incorporam 
as telas touchscreen, que permitem uma excelente usabilidade nos 
dispositivos, facilitando seu uso.
 � Conectividade: são várias as possibilidades de conexão, como a rede 
Wi-Fi e as conexões de telefonia móvel (GSM, 3G, 4G, 5G, bluetooth, 
entre outras opções).
 � Capacidade de executar aplicativos: talvez a execução de aplicativos 
seja uma das mais inovadoras características no smartphone, visto que 
os telefones celulares traziam aplicativos de fábrica e não ofereciam 
muitas opções de personalização destes. Nos smartphones, o usuário 
pode instalar os aplicativos disponíveis nas lojas on-line de aplicativos 
(o número de aplicativos que o usuário pode instalar irá depender da 
capacidade de armazenamento de seu dispositivo), o que aumenta as 
possibilidades de uso para o smartphone.
 � Câmeras: o conceito de câmera fotográfica foi modificado quando os 
smartphones passaram a incorporar câmeras, muitos destes dispondo 
inclusive de flash, além de gravarem vídeos em resolução alta (esta 
qualidade varia conforme as características dos aparelhos, mas existem 
smartphones de qualidade superior a equipamentos profissionais).
Outro dispositivo bastante popular é o tablet, que pode ser visto como uma 
evolução do PDA (personal digital assistant, ou assistente pessoal digital). O 
tablet possui praticamente as mesmas funções que um smartphone, no entanto, 
sua tela possui dimensões maiores.
O tablet pode propiciar uma experiência diferente em relação ao smar-
tphone, por exemplo, melhor visualização de conteúdos multimídia como 
vídeos, filmes, fotos ou até a melhor leitura de um documento.
3Introdução ao desenvolvimento para dispositivos móveis
Apesar de o tablet possuir as mesmas funções que um smartphone, este normalmente 
não realiza ligações telefônicas (o que não é uma regra, visto que alguns tablets possuem 
essa funcionalidade). No entanto, muitos tablets disponibilizam conexões por rede 
de celulares utilizando os mesmos chips (SIM cards) que os smartphones utilizam para 
realizar conexões 3G, 4G, entre outros.
Tipos de sistemas operacionais móveis
Lee, Schneider e Schell (2005) definem o sistema operacional móvel como o 
cérebro que controla o dispositivo, disponibilizando funcionalidades para o 
usuário que vão além de suas próprias. A seguir, destacamos os quatro sistemas 
operacionais mais relevantes.
 � Android: desenvolvido pela Google, utilizado por diversos fabricantes. 
 � iOS: criado pela Apple, exclusivo para os seus dispositivos.
 � Symbian OS: desenvolvido pela Nokia e utilizado por diversos fabri-
cantes, mas foi descontinuado.
 � Windows Phone: criado pela Microsoft, chegou a ser muito utilizado, 
mas não resistiu à concorrência e recentemente foi descontinuado.
O Windows Phone e o Symbian OS, conforme mencionado, não são mais 
desenvolvidos, mas desempenharam papéis importantes no desenvolvimento 
de sistemas operacionais. Diversos fabricantes utilizaram o Symbian OS em 
seus dispositivos e este foi, por determinado período, o sistema operacional 
móvel mais utilizado do mundo. O Windows Phone chegou a fazer frente com 
o Android e o iOS, mas não suportou a grande concorrência destes.
O iOS é desenvolvido pela Apple para uso exclusivo nos seus produtos, 
portanto é um software de desenvolvimento fechado, ou seja, não permite 
alterações internas do sistema, exceto as opções presentes nas configurações. 
Por outro lado, oferece uma experiência mais estável e segura ao usuário, 
visto que este é projetado para atender apenas os dispositivos desenvolvidos 
pela própria marca.
Introdução ao desenvolvimento para dispositivos móveis4
O Android possui código totalmente aberto, sendo disponível a qual-
quer fabricante que deseje utilizá-lo em seus dispositivos, o que causou um 
grande sucesso, tornando-se um dos sistemas operacionais mais utilizados 
na atualidade. 
Principais características dos dispositivos 
móveis e seus sistemas operacionais
Características dos dispositivos móveis
Deitel, Deitel e Deitel (2015) elencam duas características como as principais 
em dispositivos móveis. A primeira é a portabilidade, que corresponde à 
capacidade de ser facilmente transportado, sendo que, na atualidade, um 
dispositivo deve ser capaz de ser carregado nas mãos para ser considerado 
portátil. A segunda característica é a usabilidade, que indica a capacidade de 
ser utilizado por diversos usuários, emdiversos ambientes. A usabilidade de 
um dispositivo depende de vários fatores, como características do usuário; 
características do ambiente e características do dispositivo.
A interação do usuário com um dispositivo móvel possui certo nível de 
dependência de suas características pessoais. Segundo Lee, Schneider e Schell 
(2005), as características mais comuns do usuário são:
 � Tamanho e força: características que possuem um efeito sobre a inte-
ração do usuário com o dispositivo móvel. Por exemplo, um notebook 
que é facilmente transportado por um adulto pode não ser considerado 
utilizável para seu filho.
 � Flexibilidade e destreza: causam efeito na usabilidade do dispositivo 
móvel, em situações em que um usuário adulto tenha dedos maiores 
e precise usar um teclado maior. Por exemplo, um bombeiro que usa 
luvas grossas e precisa acessar informações sobre a planta de um prédio 
com um tablet pode encontrar dificuldades e classificar o dispositivo 
como inútil.
 � Conhecimento e capacidade: usualmente, os dispositivos mais úteis 
são os mais simples e intuitivos de se utilizar. Caso o dispositivo seja 
difícil de se utilizar, o usuário não o considerará útil.
5Introdução ao desenvolvimento para dispositivos móveis
O ambiente em que o usuário opera o dispositivo afeta o tipo a ser utilizado, 
sendo que algumas condições em relação ao ambiente devem ser levadas em 
conta.
 � Condições normais de funcionamento: um dispositivo móvel deve 
trabalhar sob as condições normais de trabalho do usuário. Um exemplo 
seria um usuário que trabalha em pé durante períodos prolongados de 
tempo. Neste caso, um tablet pode ser mais adequado que um notebook, 
já que o dispositivo não precisa ficar na posição horizontal.
 � Condições extremas: por exemplo, um funcionário de serviços de 
emergência, como um bombeiro trabalhando em um ambiente arriscado, 
pode necessitar de um dispositivo móvel à prova d'água ou outro mais 
resistente, que possa suportar as condições do ambiente.
Os dispositivos móveis têm características próprias que podem afetar sua 
usabilidade total. Algumas dessas características, indicadas por Lee, Schneider 
e Schell (2005) são:
 � Tempo de inicialização: em uma situação de tempo crítico (funcionário 
de serviços de emergência) um dispositivo móvel que inicia de forma 
instantânea é o mais adequado.
 � Integridade de dados: a falta de tolerância à perda de dados torna 
necessário o armazenamento permanente no próprio dispositivo. Assim, 
um suporte para cartão de memória ou uma memória interna ampla se 
tornam necessários.
 � Interface com o usuário (teclado, mouse, tela sensível ao toque): 
a interface pode dificultar a execução de determinadas tarefas. Um 
exemplo é a falta de agilidade para se desenhar utilizando um mouse, 
sendo que é possível desenhar com muito mais agilidade ao se utilizar 
uma caneta em um tablet ou os próprios dedos na tela sensível ao toque.
 � Robustez/resistência: a fragilidade é muito comum em dispositivos 
móveis, que podem quebrar se forem derrubados. Alguns são projetados 
para serem mais resistentes, porém, tornar um dispositivo mais robusto 
pode afetar sua portabilidade e usabilidade.
Introdução ao desenvolvimento para dispositivos móveis6
Características dos sistemas operacionais
O Android, foco de nosso estudo, é um sistema operacional de código aberto 
(SIMON, 2011), o que significa que qualquer desenvolvedor pode acessar o 
código-fonte do sistema e verificar como cada recurso é desenvolvido. Além 
disso, conforme mencionado anteriormente, qualquer fabricante pode utilizar 
o Android e realizar as modificações que desejar para que este seja utilizado 
em seus dispositivos.
Outra característica de destaque do sistema Android é a fragmentação. No 
Quadro 1, podemos observar as versões do Android e o percentual que cada 
uma possui do total de dispositivos. Isso pode ser considerado um problema, 
visto que o desenvolvedor pode ter que projetar aplicativos para serem exe-
cutados em várias versões do sistema operacional ou limitar para uma versão 
específica e, com isso, acabar perdendo usuários em potencial.
Fonte: Adaptado de Painéis… (2019).
Versão Código API Distribuição
2.3.3 –
2.3.7
Gingerbread 10 0,3%
4.0.3 –
4.0.4
Ice Cream 
Sandwich
15 0,3%
4.1.x
4.2.x
4.3
Jelly Bean 16
17
18
1,2%
1,5%
0,5%
4.4 KitKat 19 6,9%
5.0
5.1
Lollipop 21
22
3,0%
11,5%
6.0 Marshmallow 23 16,9%
7.0
7.1
Nougat 24
25
11,4%
7,8%
8.0
8.1
Oreo 26
27
12,9%
15,4%
9 Pie 28 10,4%
Quadro 1. Versões da API do Android e percentual de utilização da versão do Android
7Introdução ao desenvolvimento para dispositivos móveis
Deitel, Deitel e Wald (2016) relatam que, apesar de dificultosa para os 
desenvolvedores, a fragmentação traz muitos benefícios para o usuário. Um 
exemplo é o caso do iOS, concorrente do Android que possui baixa fragmen-
tação. Dessa forma, os dispositivos que utilizam o iOS recebem atualizações 
para a grande maioria de dispositivos executar uma versão atualizada do sistema 
operacional. Apesar de isso parecer benéfico para o usuário, que sempre irá 
possuir a versão atualizada do sistema e todos seus novos recursos, há outro 
lado não tão conveniente. Um dispositivo iOS de quatro anos de idade tende 
a se tornar mais lento ao ser atualizado para a versão mais recente do sistema 
operacional, visto que o sistema operacional evoluiu mas o hardware do 
dispositivo continua o mesmo. Logo, para se manter atualizado, aqueles que 
utilizam o sistema iOS deverão adquirir um novo dispositivo para usufruir 
de uma boa experiência de usuário.
Os dispositivos Android sofrem menos com esse tipo de situação pois, 
dada sua grande fragmentação, estes tendem a receber mais atualizações de 
segurança e novos recursos mais pontuais para o seu dispositivo, o que em 
geral não prejudica sua performance. Dessa forma, o dispositivo tem maior 
durabilidade, sem haver necessidade de se comprar um dispositivo com maior 
capacidade de recursos (consequentemente mais caro) para rodar as versões 
mais recentes do Android, exceto em casos em que o usuário necessite de 
certos recursos. Por exemplo, caso um aplicativo necessário para o usuário 
apresente um determinado recurso, a aquisição de um novo dispositivo seria 
justificável por se tratar de uma situação em que não existe uma atualização 
disponível ou um recurso não está presente em seu dispositivo.
No link a seguir, podemos encontrar diversas informações sobre as versões do Android 
que podem ajudar o desenvolvedor na definição de versões e APIs para o seu projeto.
https://qrgo.page.link/5nRFL
No Quadro 2, podemos observar as diversas APIs (Application Program-
ming Interfaces) do Android. Ao iniciar um projeto de um aplicativo para 
dispositivo móvel, o desenvolvedor deve estar atento à questão da escolha 
da API mínima de seu projeto, pois esta irá influenciar no direcionamento 
Introdução ao desenvolvimento para dispositivos móveis8
do público em potencial do aplicativo. Por exemplo, ao definir como API 
mínima a versão 23 (Android versão 6.0 Marshmallow), o desenvolvedor irá 
perder cerca de 25% do total de usuários possíveis para o seu aplicativo. Sendo 
assim, o desenvolvedor deve planejar quais recursos serão necessários para 
seu aplicativo, devendo escolher uma API mínima adequada que não o limite, 
mas que, de maneira equilibrada, não o faça perder o público-alvo.
Posições de mercado
Nesta seção, conheceremos os dados de mercado relacionados aos dispositivos 
móveis e aos seus sistemas operacionais. Vale ressaltar que ambos os mercados 
são extremamente competitivos, tanto pelo fato de o mercado móvel ser uma 
tendência mundial, quanto pelo fato de que há concorrência ferrenha entre as 
empresas fabricantes e desenvolvedoras.
O mercado de dispositivos móveis vem crescendo a cada ano. Na Figura 1, é 
possível identificar essa tendência, observando que em 2018, em comparação ao 
ano de 2014, houve um aumento de quase 23% na participação de smartphones 
em transações devendas. Os tablets vêm oscilando e perdendo um pouco de 
mercado e as vendas de dispositivos desktop recuaram em quase 21%.
Figura 1. Comparação da utilização em compras de dispositivos móveis (smartphones e 
tablets) vs. desktop.
Fonte: Desktop... (2019, documento on-line).
9Introdução ao desenvolvimento para dispositivos móveis
Essa informação corrobora com a afirmativa de que os usuários estão cada 
vez mais preferindo os dispositivos móveis aos dispositivos não móveis, como 
é o caso dos computadores do tipo desktop. Na Figura 2, podemos observar 
uma estatística um pouco diferente, relacionada à fatia do total de vendas de 
dispositivos móveis que cada fabricante obteve em 2018. É possível observar 
que o mercado de dispositivos móveis é praticamente dominado pelas marcas 
Samsung e Apple.
Figura 2. Comparação das vendas de dispositivos móveis (smartphones e tablets) pelos 
fabricantes em 2018.
Fonte: Mobile... (2019a).
Mudando o foco dos dispositivos móveis para os sistemas operacionais, 
conforme a Figura 3 ilustra, o sistema operacional Android praticamente 
domina o mercado, visto que mais de 72% dos dispositivos móveis comercia-
lizados possuem este sistema operacional contra quase 24% de seu principal 
e praticamente único concorrente, sendo que os demais sistemas operacionais 
não chegam a somar 4% do total.
Introdução ao desenvolvimento para dispositivos móveis10
Figura 3. Comparação das vendas de dispositivos móveis/sistemas operacionais.
Fonte:. Mobile... (2019b, documento on-line).
Segundo Deitel, Deitel e Deitel (2015), as oportunidades para os desen-
volvedores de aplicativos Android são imensuráveis. A grande competição 
entre os fabricantes de dispositivos móveis populares e as grandes empresas 
de telefonia móvel estão levando o mercado a uma rápida inovação e à queda 
nos preços. A concorrência entre as dezenas de fabricantes de dispositivos 
Android impulsiona a inovação de hardware e software dentro desta comu-
nidade. Tal fato permite que o desenvolvedor Android conceba aplicações 
cada vez mais avançadas e inovadoras, proporcionando a criação de múltiplas 
oportunidades neste mercado.
No portal StatCounter você pode obter diferentes estatísticas, como as citadas neste 
capítulo. Tais estatísticas podem ajudar na tomada de decisões em relação a vários 
aspectos de um projeto de aplicativo, como a plataforma de desenvolvimento, a 
versão de API mínima para o projeto, já que é possível obter dados atualizados da 
fragmentação dos dispositivos Android, entre outros.
https://qrgo.page.link/fRMmc
11Introdução ao desenvolvimento para dispositivos móveis
DEITEL, P.; DEITEL, H.; DEITEL, A. Android: como programar. 2. ed. Porto Alegre: Book-
man, 2015. 690 p.
DEITEL, P.; DEITEL, H.; WALD, A. Android 6 para programadores: uma abordagem baseada 
em aplicativos. 3. ed. Porto Alegre: Bookman, 2016. 618 p.
DESKTOP vs Mobile vs Tablet Market Share Worldwide. StatCounter, Dublin, 2019. Dis-
ponível em: http://gs.statcounter.com/platform-market-share/desktop-mobile-tablet/
worldwide. Acesso em: 29 maio 2019.
LEE, V.; SCHNEIDER, H.; SCHELL, R. Aplicações móveis: arquitetura, projeto e desenvolvi-
mento. São Paulo: Pearson; Makron Books, 2005. 328 p.
MOBILE & Tablet Operating System Market Share Worldwide. StatCounter, Dublin, 
2019a. Disponível em: http://gs.statcounter.com/os-market-share/mobile-tablet/
worldwide/#monthly-201801-201812-bar. Acesso em: 29 maio 2019.
MOBILE Vendor Market Share Worldwide. StatCounter, Dublin, 2019b. Disponível em: 
http://gs.statcounter.com/platform-market-share/desktop-mobile-tablet/worldwide. 
Acesso em: 29 maio 2019.
PAINÉIS | Android Developers. Android Open Source Project, [S. l.], 2019. Disponível em: 
https://developer.android.com/about/dashboards/?hl=pt-br. Acesso em: 29 maio 2019. 
SIMON, J. Head first Android development. Sebastopol: O’Reilly, 2011. 608 p.
Introdução ao desenvolvimento para dispositivos móveis12
DESENVOLVIMENTO 
PARA DISPOSITIVOS 
MÓVEIS
Diego Bittencourt de Oliveira
Plataformas de 
desenvolvimento: IDE 
e emulador Android
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
 � Identificar as plataformas de desenvolvimento e emuladores da 
Android.
 � Descrever as principais características das IDEs atuais e de emuladores.
 � Relacionar as principais características entre as plataformas de desen-
volvimento e seus emuladores.
Introdução
Neste capítulo, você irá conhecer as principais ferramentas de desenvolvi-
mento de aplicativos para a plataforma Android. Tais ferramentas são capazes 
de fornecer ao desenvolvedor de aplicativos os recursos necessários para 
aplicar as funções existentes em um dispositivo móvel, de modo a construir 
uma aplicação robusta e funcional aos objetivos propostos para esta.
Além disso, você verá as principais características destas ferramentas 
e aprenderá sobre a IDE da Android (Android Studio) para o desenvolvi-
mento de seus aplicativos , sendo esta a ferramenta indicada pela própria 
plataforma como a mais adequada para desenvolvê-los. 
Você também conhecerá as principais funcionalidades dos emulado-
res da plataforma Android, que auxiliam o profissional desenvolvedor a 
testar e a detectar falhas em seus projetos, além de identificar até que 
ponto estes emuladores conseguem substituir dispositivos reais nos 
testes de um aplicativo em desenvolvimento.
Ainda neste capítulo, iremos relacionar algumas características do 
Android Studio com o emulador padrão da plataforma Android, iden-
tificando seus recursos e como estes auxiliam no desenvolvimento de 
um aplicativo livre de falhas.
Plataformas de desenvolvimento e 
emuladores da Android
IDE, do inglês integrated development environment, ou ambiente de desen-
volvimento integrado, é um software voltado para o desenvolvimento de 
programas ou aplicativos. O desenvolvedor encontra nos IDEs todas as fun-
ções necessárias para o desenvolvimento, desde programas de computador a 
aplicativos mobile, assim como recursos que possibilitam a criação de códigos 
com uma incidência menor de erros.
No passado, os desenvolvedores necessitavam apenas de um editor de texto 
e um navegador para criar um software. Agora, com os IDEs, uma série de 
novas opções para otimizar o tempo gasto com códigos foi disponibilizada. 
Atualmente, os IDEs contam, inclusive, com emuladores capazes de criar 
ambientes para a realização de testes nos aplicativos desenvolvidos. Assim, é 
possível realizar modificações no código-fonte e, com poucos cliques, verificar 
seu funcionamento em um ambiente simulado, ajudando o desenvolvedor a 
encontrar possíveis falhas de forma mais ágil.
Visando popularizar sua plataforma entre os desenvolvedores, a Android 
disponibiliza um SDK (software development kit) de forma gratuita. Neste 
SDK, encontramos ferramentas multiplataforma, como o Android Studio e o 
emulador do ambiente Android.
IDEs de desenvolvimento Android
Atualmente, a Android possui diversos IDEs voltados para o desenvolvimento 
de aplicativos para sua plataforma. O IDE de maior destaque e o mais indicado 
para o desenvolvimento na plataforma, pela própria Android, é o Android 
Studio. No entanto, podemos destacar outros IDEs, como os listados a seguir.
 � Eclipse: foi o primeiro IDE a propiciar o desenvolvimento Android, 
sendo originalmente criado para ser um IDE para várias linguagens de 
programação, como PHP, C++ e Java. A Android, por precisar de um 
IDE para desenvolver aplicativos para a sua plataforma, criou o plugin 
ADT (Android development tools), que possibilitou o desenvolvimento 
Android neste IDE.
Plataformas de desenvolvimento: IDE e emulador Android2
 � NetBeans IDE: este IDE se caracteriza pela capacidade de desenvol-
ver aplicativos para desktop, dispositivos móveis e Web como Java, 
JavaScript, HTML5, PHP, C / C ++ e diversas outras linguagens de 
maneira rápida e fácil. Assim como o Eclipse, utiliza o plugin ADT 
para desenvolver aplicativos para Android.� Visual Studio: utilizando o SDK Xamarin.Android, é possível desen-
volver aplicativos para Android com a linguagem C#. Outra curiosi-
dade é que um aplicativo desenvolvido neste IDE pode ser facilmente 
modificado para funcionar em dispositivos que utilizam o sistema 
operacional iOS.
 � RAD Studio: este IDE de desenvolvimento utiliza a linguagem Delphi 
ou C++, que possibilita a criação de aplicativos para várias plataformas 
além da Android, como Windows Phone e iOS, sendo capaz de rodar 
esse aplicativo em qualquer um destes sistemas operacionais, sem a 
necessidade de qualquer modificação no código.
O Android Studio, conforme já mencionado, é o IDE indicado e desen-
volvido pela própria Android. Foi lançado em 2013, tendo como base o IDE 
JetBrains Intellij IDEA, sendo este desenvolvido para a confecção de aplicativos 
em linguagem Java, o que não é uma coincidência, visto que a Android trabalha 
com esta linguagem de programação de forma nativa no desenvolvimento de 
seus aplicativos.
A Figura 1 ilustra a visão geral do Android Studio e podemos observar, 
nos itens a seguir, a interface de vários recursos disponíveis nesta ferramenta.
1. Barra de ferramentas.
2. Barra de navegação. Ajuda na navegação pela estrutura de pastas do 
projeto.
3. Janela do editor de código-fonte, espaço onde o código-fonte é editado, 
sendo que esta janela pode se modificar, dependendo do código editado.
4. Barra de janela de ferramentas, onde estão localizados botões para 
expandir ou ferramentas secundárias.
5. Janela de ferramentas, com o gerenciamento dos projetos, tarefas per-
sonalizadas, controle de versão, entre outros.
6. Barra de status, que disponibiliza o status do projeto, do IDE, mensagens 
e advertências.
3Plataformas de desenvolvimento: IDE e emulador Android
Figura 1. Visão geral da interface do Android Studio.
Fonte: Android Developers (2019a, documento on-line).
É possível encontrar mais informações sobre a versão atual do Android Studio, além de 
opções para realizar o download e executar a instalação da ferramenta, no link a seguir.
https://qrgo.page.link/Q9CHk
Emuladores do Android
Deitel, Deitel e Deitel (2015) define um emulador como um software executado 
em uma plataforma (por exemplo, Windows, MAC OS X ou Linux), sendo 
que este deve disponibilizar um ambiente emulado do sistema desejado. Dessa 
forma, é possível executar as opções deste ambiente, como um aplicativo, e 
utilizá-lo para verificar seu funcionamento, como uma espécie de ambiente 
para testes.
Plataformas de desenvolvimento: IDE e emulador Android4
No intuito de acelerar o processo de desenvolvimento de um aplicativo 
Android, a plataforma disponibiliza um emulador multiplataforma em seu SDK, 
chamado Android Emulator. Por meio deste emulador é exibida uma janela 
com uma interface realista da Android, conforme observamos na Figura 2.
Figura 2. Visão geral da interface Android Emulator.
Fonte: Android Developers (2019b, documento on-line).
Ao criar um AVD (Android virtual device, ou dispositivo Android virtual) 
no Android Emulator, é possível definir todas as características e recursos de 
um dispositivo tal qual o dispositivo real.
5Plataformas de desenvolvimento: IDE e emulador Android
Um AVD consiste em uma configuração na qual as características do dispositivo a ser emu-
lado serão definidas. O AVD possui uma série de configurações que permitem uma grande 
gama de simulações. No link a seguir você pode aprender a realizar estas configurações.
https://qrgo.page.link/AknJ1
Outros emuladores da Android estão disponíveis no mercado. Destacamos 
alguns a seguir.
 � BlueStacks: emulador Android que permite que o uso de aplicativos 
Android em um computador, tanto Windows como Mac.
 � Android x86: avançado emulador Android, muito utilizado para jogos 
e popular entre os desenvolvedores, já que os jogos para Android são 
executados em computadores sem apresentar quaisquer problemas.
 � GenyMotion: muito utilizado por desenvolvedores, este emulador An-
droid é executado por intermédio do Virtual Box (software de virtu-
alização de sistemas operacionais). Oferece um bom desempenho no 
uso de aplicativos e jogos, oferecendo várias opções de personalização 
das configurações do emulador.
Você pode encontrar mais informações sobre os emuladores alternativos da Android 
nos links a seguir.
 � BlueStacks: 
https://qrgo.page.link/mZ4Z6
 � Android x86: 
https://qrgo.page.link/sisd7
 � GenyMotion: 
https://qrgo.page.link/XFEsw
Plataformas de desenvolvimento: IDE e emulador Android6
Características dos IDEs atuais e emuladores 
Android
Segundo Simon (2011), o SDK da Android é projetado para permitir que se 
trabalhe com várias versões da plataforma no mesmo desenvolvimento. Para 
manter os downloads pequenos, a versão do SDK pacotes é separada do SDK. 
Isso também permite atualizar para novas versões da Android sem ter que 
baixar o SDK novamente, que pode atingir até mais de 30GB se baixado por 
completo.
Para uma boa experiência com o Android Studio, você deve estar atento aos reque-
rimentos mínimos de sistema. No caso da plataforma Windows, os requisitos são os 
listados abaixo.
 � Microsoft Windows 7/8/10 32 ou 64 bits.
 � 3 GB de memória RAM mínima ou 8 GB de memória RAM recomendado.
 � 2 GB de espaço mínimo disponível em disco ou 4GB de espaço disponível em 
disco recomendados.
 � Resolução mínima da tela de 1280 × 800 pixels.
A maioria dos IDEs no mercado atual utiliza o SDK da Android como 
base para suas aplicações, fornecendo uma ferramenta de criação, gerencia-
mento e depuração do projeto com base nas funcionalidades fornecidas pelo 
SDK. O Eclipse e o Netbeans são exemplos de IDEs que utilizam o SDK 
da Android como base, integrando-o ao plugin ADT (Android development 
tools). Logo, não existe uma diferença clara sobre qual dos dois IDEs seria 
o mais indicado, pois esta é uma questão relacionada ao desenvolvedor. Por 
exemplo, um desenvolvedor com experiência em aplicativos Java, utilizando 
o Netbeans, teria uma curva de aprendizado bem menor ao utilizá-lo para 
desenvolver aplicativos para a Android, visto que já possui experiência com 
IDEs e conhece suas funcionalidades.
7Plataformas de desenvolvimento: IDE e emulador Android
No caso de IDEs como o Visual Studio e o RAD Studio, essa depen-
dência do desenvolvedor vai ainda mais longe. C# e Delphi, linguagens de 
programação dos IDEs citados, possuem muitos desenvolvedores no mercado. 
Dessa forma, estas linguagens visam possibilitar aos desenvolvedores, que 
até então basicamente desenvolviam aplicativos para a plataforma Windows 
(Windows Desktop, Windows Phone e Web, no caso do Visual Studio), a 
desenvolver aplicativos para Android, utilizando linguagens de programação 
nas quais os já possuem experiência. A principal características destes IDEs é 
a capacidade de criar um projeto Android em suas linguagens nativas (C# ou 
Delphi) e criar aplicativos Android baseados em Java (ou seja, transformam 
o código-nativo em Java para, então, o SDK da Android gerar um aplicativo 
compatível com a plataforma). Este fato pode ser facilmente comprovado, 
visto que o gerenciador do SDK padrão da Android se encontra disponível 
nestas ferramentas. A Figura 3 ilustra o aplicativo padrão de gerenciamento 
das bibliotecas disponíveis no SDK da plataforma.
Figura 3. Gerenciador do SDK Android e AVD.
Plataformas de desenvolvimento: IDE e emulador Android8
Segundo Deitel, Deitel e Wald (2016), o Android Studio, na condição de 
IDE mais indicado pela plataforma para o desenvolvimento de seus aplicativos, 
possui características muitos similares às de outros IDEs, visto que o próprio 
Android Studio é baseado em um IDE desenvolvido para Java (IDE JetBrains 
Intellij IDEA, conforme mencionado). No entanto, o Android Studio possui 
características inseridas pela equipe Android que o tornam uma ferramenta 
muito completa para a plataforma. Algumas características estão listadas a seguir.
 � Gradle: ferramenta de automatização doprocesso de compilação do 
aplicativo.
 � Layout: a interface do IDE permite arrastar componentes para formar 
o layout do aplicativo e editar o código-fonte gerado pela interface. 
Além disso, permite simular o comportamento do layout criado nos 
diversos tamanhos e formatos de displays encontrados nos dispositivos 
disponíveis do mercado.
 � Renderização dos layouts: função de renderização inteligente de layout 
na qual os erros de layout são identificados e sugestões de solução são 
disponibilizadas ao desenvolvedor.
 � Análise do código: similar a renderização de layouts, a análise de código 
verifica o código-fonte do aplicativo, linha a linha, sugerindo correções 
ao desenvolvedor.
 � Repositórios de versionamento: possui integração com os principais 
repositórios de versionamento do mercado, o que possibilita o trabalho 
em conjunto entre grandes equipes de desenvolvimento, trabalhando 
simultaneamente em um único projeto.
 � Plugins: apesar de ser uma característica muito comum nos IDEs, o 
suporte de plugins do Android Studio é muito potente, visto que até 
mesmo o emulador nativo do SDK pode ser substituído pelo uso de 
plugins.
O Gradle é um importante conjunto de ferramentas que automatiza e ge-
rencia o processo de compilação de um aplicativo Android, funcionando como 
uma espécie de caixa de ferramentas da compilação na qual são fornecidos 
processos e configurações específicos para compilar e testar um aplicativo 
Android. Vale observar que o Gradle funciona de forma independente do An-
droid Studio, ou seja, é possível compilar os aplicativos via linha de comando 
em um computador em que o Android Studio não esteja instalado.
9Plataformas de desenvolvimento: IDE e emulador Android
Você pode encontrar mais informações sobre o Gradle em sua página oficial e verificar 
as informações na página sobre Android, que aborda o processo de compilação de 
aplicativos.
https://qrgo.page.link/Uvo8Z
O emulador disponível no SDK da Android é o mais completo, pois possui 
diversas imagens de todas as versões do sistema operacional Android, sendo 
que por seu AVD é possível criar dispositivos com as mais variadas caracte-
rísticas e dos mais variados tipos:
 � smartphones;
 � tablets;
 � relógios inteligentes (dispositivo Wear OS);
 � Android TV (sistema operacional Android direcionado a televisores 
smart).
Dentre as características que podemos definir para um dispositivo pelo 
AVD, se destaca a possibilidade de personalização do hardware. Abaixo, 
temos algumas das personalizações possíveis:
 � poder de processamento;
 � quantidade de memória RAM;
 � dimensões e resolução do display;
 � botões e tipos de teclado disponíveis;
 � sensores (GPS, sensor de proximidade, giroscópios, acelerômetros, 
entre outros);
 � câmeras.
Plataformas de desenvolvimento: IDE e emulador Android10
Neste emulador também podemos simular diferentes operações como uma 
ligação telefônica sendo recebida, um SMS sendo recebido, níveis de bateria e 
localizações do GPS. Dessa forma, é possível realizar simulações de operações 
que um aplicativo executa em seu uso real e analisar se o comportamento 
realizado é o comportamento esperado. Por exemplo, quando um smartphone 
recebe uma ligação telefônica, a prioridade é que esta ligação seja atendida 
e que nenhum aplicativo se imponha sobre ela. Outro exemplo de simulação 
seria um usuário em meio a uma ligação telefônica que recebe uma segunda 
chamada de um aplicativo de comunicação como o Skype. Nesse caso, o ideal 
é que o Skype identifique que o usuário está ocupado e que no momento não 
pode atender, não gerando alertas que possam interferir na ligação corrente.
Todas essas simulações e inúmeras outras podem ser realizadas pelo emu-
lador do SDK da Android, porém muitos desenvolvedores relatam dificuldades 
ao simularem aplicativos mais complexos neste emulador. Para suprir estes 
casos, muitos desenvolvedores utilizam emuladores de outros fornecedores 
como o Genymotion, um emulador muito potente que roda em um navegador 
e, inclusive, possui um plugin que o integra ao Android Studio. No entanto, 
esta é uma ferramenta paga, o que acaba afastando alguns desenvolvedores que 
preferem utilizar outras técnicas gratuitas para solucionar suas dificuldades.
Muitas vezes, configurar o dispositivo físico para trabalhar de forma integrada ao Android 
Studio pode ser um processo complexo que desmotiva o desenvolvedor. No link a 
seguir podemos encontrar diversas informações sobre a configuração deste recurso.
https://qrgo.page.link/1BksV
Uma técnica possível seria a utilização de dispositivos reais para realizar 
as simulações e a depuração dos aplicativos, sendo que pelo SDK da Android 
podemos utilizar um celular comum, como um dispositivo integrado ao IDE, 
no qual o aplicativo é instalado e iniciado de forma automatizada, tal qual um 
AVD. Essa técnica necessita de um dispositivo físico e é, inclusive, uma técnica 
muito recomendada, considerando que o emulador não é um dispositivo real, 
por mais que forneça recursos. No dispositivo real, o aplicativo pode apresentar 
comportamentos indesejáveis que não são detectáveis em simulações.
11Plataformas de desenvolvimento: IDE e emulador Android
Características das plataformas de 
desenvolvimento e os seus emuladores
A capacidade de realizar diversas simulações pela plataforma integrada ao 
emulador ou dispositivo de teste é uma ferramenta muito potente que o de-
senvolvedor tem em suas mãos para auxiliá-lo na detecção de problemas. Os 
problemas citados podem ser relacionados a uma lógica de programa não 
desenvolvida de forma adequada pelo desenvolvedor ou, até mesmo, um 
problema relacionado a uma incompatibilidade no sistema operacional.
Em um ambiente móvel, erros podem custar muito caro e trazer muitas inconveniências. 
Um exemplo é a energia elétrica, considerando que a empresa fornecedora se desloca 
todos os meses até a residência do cliente para coletar seu consumo de energia. Em 
diversos casos, o cliente pode residir em locais distantes ou de difícil acesso e, portanto, 
essa coleta pode gerar um custo alto. Na situação em que essa coleta é realizada 
com o auxílio de um dispositivo móvel, a ocorrência de uma falha ao coletar essas 
informações pode gerar prejuízo ao funcionário, que deverá retornar à empresa com 
o dispositivo para que este seja verificado e, então, retornar à residência do cliente e 
realizar a coleta de dados.
Na Figura 4 é possível observar um exemplo da capacidade do Android 
Studio de realizar análises durante as simulações com o aplicativo, sendo 
que esta figura ilustra a técnica de break point (ponto de interrupção). Nesta 
técnica, o programa é executado normalmente e pausa a sua execução assim 
que encontrar um ponto de interrupção. A partir deste momento, é possível 
visualizar dados avançados do código-fonte, com os valores atuais de cada 
variável declarada no aplicativo. Isto serve para averiguar se o comportamento 
do software até esse ponto foi correto, ou executar o código-fonte linha a 
linha, a partir deste momento, para analisar se o aplicativo apresentará o 
comportamento esperado.
Neste recurso, o Android Studio é capaz de realizar a análise linha a linha 
durante a execução de um aplicativo em um dispositivo real integrado ao 
IDE, o que o torna ainda mais potente, visto que realizar testes reais de um 
aplicativo já é vantajoso, porém a capacidade de analisar o código em execução 
no dispositivo em tempo real é um recurso muito precioso.
Plataformas de desenvolvimento: IDE e emulador Android12
Figura 4. Exemplo de ponto de interrupção no código-fonte do aplicativo e visualização 
do conteúdo das variáveis.
Fonte: Android Developers (2019c, documento on-line).
Segundo Lee, Schneider e Schell (2005), em dispositivos móveis os recursos 
costumam ser limitados, alguns destes chegando a estados críticos. Observe 
a seguir.
 � Processamento: processadores de outros dispositivos são componentes 
que costumam gerar calor. Em dispositivos móveis,estes componentes 
possuem boa capacidade de processamento compatível com o dispositivo 
em questão, porém a emissão de calor pode ser indesejada pelo usuário, 
logo seu processamento em alta performance deve ser controlado.
 � Memória RAM: podemos encontrar dispositivos no mercado atual com 
8GB de memória, mas em muitos casos não nos depararemos com uma 
quantidade de recursos de memória tão flexíveis assim. A utilização de 
memória do aplicativo deve ser controlada, visto que outros aplicativos 
que convivem no mesmo ambiente também utilizam este recurso.
 � Bateria: talvez o recurso mais crítico em um dispositivo móvel, conside-
rando que, uma vez consumida a bateria, o dispositivo não pode ser mais 
operado. O uso consciente do processamento e dos recursos de memória 
RAM influencia diretamente na quantidade de bateria consumida.
13Plataformas de desenvolvimento: IDE e emulador Android
Acima, podemos verificar a importância dos recursos indicados para 
compreendermos a importância do monitor de recursos do Android Studio, 
ilustrado na Figura 5. Por meio deste é possível analisar o uso de memória 
RAM e o uso de processamento do dispositivo móvel enquanto o aplicativo 
desenvolvido é executado. Este monitor de recursos se torna ainda mais potente 
aliado ao recurso de break point descrito anteriormente, no qual ao executar 
o aplicativo linha a linha podemos observar a evolução do uso de recursos.
É possível realizar ajustes no aplicativo para que este apresente um funcio-
namento adequado ao ambiente em que está sendo executado; por exemplo, 
não consumindo muitos recursos, ou em casos específicos em que consome 
os recursos necessários, apenas pelo período de tempo necessário à função 
executada, liberando-os em seguida, visando preservar seu bom funcionamento 
em um ambiente com diversos outros aplicativos sendo executados de forma 
concorrente.
Figura 5. Exemplo de monitoração dos recursos em uso do AVD.
Fonte: Android Developers (2019c, documento on-line).
Muitos dos erros de um aplicativo são complexos de se identificar, sendo necessárias 
técnicas de análise de aplicativo durante seu funcionamento para identificar certos 
comportamentos. O link a seguir fornece informações sobre estas técnicas de depuração 
no IDE Android Studio.
https://qrgo.page.link/3ibdE
Plataformas de desenvolvimento: IDE e emulador Android14
ANDROID DEVELOPERS. Conheça o Android Studio. 2019a. Disponível em: https://deve-
loper.android.com/studio/intro?hl=pt-br. Acesso em: 1 jun. 2019.
ANDROID DEVELOPERS. Depure seu aplicativo. 2019c. Disponível em: https://developer.
android.com/studio/run/emulator.html. Acesso em: 1 jun. 2019.
ANDROID DEVELOPERS. Executar aplicativos no Android Emulator. 2019b. Disponível 
em: https://developer.android.com/studio/run/emulator.html. Acesso em: 1 jun. 2019.
DEITEL, P.; DEITEL, H.; WALD, A. Android 6 para programadores: uma abordagem baseada 
em aplicativos. 3. ed. Porto Alegre: Bookman, 2016.
DEITEL, P.; DEITEL, H.; DEITEL, A. Android: como programar. 2. ed. Porto Alegre: Book-
man, 2015.
LEE, V.; SCHNEIDER, H.; SCHELL, R. Aplicações móveis: arquitetura, projeto e desenvol-
vimento. São Paulo: Person, 2005.
SIMON, J. Head first android development. Farnham: O’Reilly, 2011.
Leituras recomendadas
ANDROID DEVELOPERS. Configurar sua compilação. 2019. Disponível em: https://deve-
loper.android.com/studio/build. Acesso em: 1 jun. 2019.
ANDROID DEVELOPERS. Criar e gerenciar dispositivos virtuais. 2019. Disponível em: ht-
tps://developer.android.com/studio/run/managing-avds.html. Acesso em: 1 jun. 2019.
ANDROID DEVELOPERS. Executar aplicativos em um dispositivo de hardware. 2019. Dis-
ponível em: https://developer.android.com/studio/run/device?hl=pt-br. Acesso em: 
1 jun. 2019.
ANDROID DEVELOPERS. [Site]. 2019. Disponível em: https://developer.android.com/
studio. Acesso em: 1 jun. 2019.
15Plataformas de desenvolvimento: IDE e emulador Android
DESENVOLVIMENTO 
PARA DISPOSITIVOS 
MÓVEIS 
Diego Bittencourt de Oliveira
Linguagem Java: 
conceitos essenciais
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
 � Descrever as características da linguagem Java, como suas classes e 
tipos de dados.
 � Identificar os principais conceitos de programação orientada a objetos 
com Java.
 � Operacionalizar a utilização do Java como linguagem base para o 
desenvolvimento de aplicações Android.
Introdução
Neste capítulo você conhecerá a linguagem de programação Java, que 
é a linguagem de programação nativa da plataforma Android. Por ser 
muito popular, esta linguagem foi a escolha mais adequada como lin-
guagem de programação padrão da plataforma. Isso se deve ao fato de 
existirem muitos desenvolvedores experientes nesta linguagem. Assim, 
a plataforma já inicia com milhões de desenvolvedores especializados 
em sua linguagem de programação base. 
O Java também é uma linguagem de programação potente, sendo 
totalmente orientada a objetos, além de possuir uma enorme biblioteca 
de classes muito sólida e atualizada de forma regular. No decorrer deste 
capítulo, conheceremos melhor as características das classes Java, bem 
como os tipos de dados que a linguagem de programação disponibiliza 
para o seu desenvolvedor.
Veremos, também, os conceitos de programação orientada a objetos 
com Java e aprenderemos, ainda, a utilizar Java como linguagem padrão 
para o desenvolvimento de aplicações para Android.
Linguagem Java: classes e tipos de dados
Segundo Deitel, Deitel e Deitel (2015), a linguagem Java para aplicativos 
Android é semelhante e, ao mesmo tempo, muito diferente de outras aplicações 
desenvolvidas nesta linguagem. Um desenvolvedor com experiência em Java 
terá facilidade em desenvolver aplicativos para Android, mas compreenderá 
a diferença mencionada. Já um desenvolvedor com pouca experiência nesta 
linguagem deve buscar se familiarizar.
Como já mencionado, Java é uma linguagem de programação orientada a 
objetos, ou seja, baseada na modelagem de objetos e na comunicação que estes 
possuem entre si. Em uma situação de analogia a um objeto real, pode-se definir 
o objeto caneca, algumas de suas propriedades seriam a cor, a capacidade 
máxima e a quantidade de café que possui. Em uma linguagem orientada a 
objetos, podemos definir objetos canecas e acessar suas propriedades. 
Poderíamos também enviar mensagens para os objetos, questionando-
-os sobre a quantidade de café existente em cada caneca. Assim, é possível 
observar que é possível criar e manipular qualquer objeto, fazendo com que 
estes realizem diversas funções em um aplicativo. 
Em uma situação mais cotidiana da plataforma Android, temos o objeto 
câmera, que representa a câmera física do dispositivo. Por meio deste objeto, 
podemos manipular a câmera para que tire uma foto com base nas propriedades 
que definimos e nos métodos que chamamos para configurá-la. 
Antes de criarmos uma classe que represente um objeto, temos de estudar 
os tipos de dados disponíveis, uma vez que a programação é basicamente 
um trabalho com dados. Segundo Goodrich e Tamassia (2013), Java possui 
basicamente dois grupos de tipos de dados:
 � tipos primitivos — correspondem a dados mais simples ou escalares;
 � tipos por referência — correspondem a tipos de dados representados 
por classes, ou seja, todos os outros tipos de dados não primitivos.
Na Figura 1, podemos observar os tipos primitivos de dados existentes 
na linguagem Java, bem como os limites de valores que estes tipos podem 
armazenar. Por exemplo, uma variável do tipo byte não pode armazenar o 
valor 400, visto que esta só armazena dados até 127 positivo.
Linguagem Java: conceitos essenciais2
Figura 1. Tipos primitivos de dados.
Fonte: Schützer e Massago (2008, documento on-line).
Os tipos por referência são classes, conforme já citamos e, por convenção 
de nomenclatura, as classes em Java são nomeadas com a primeira letra do 
nome em maiúsculo. Por exemplo, Goodrich e Tamassia (2013) relatam queString é um dos tipos de dados por referência mais comuns da linguagem 
Java, sendo que a String é basicamente uma lista de elementos char. 
Ou seja, podemos armazenar a frase “Android é uma boa plataforma” em 
uma variável do tipo String, em que cada uma das letras seria um char.
3Linguagem Java: conceitos essenciais
Na linguagem Java você pode inserir frases e comentários junto ao código do seu 
aplicativo, sem que estas informações realizem qualquer interferência no fluxo do 
programa. Abaixo temos um exemplo:
//Este é um comentário de uma linha
O texto após as // não é interpretado pelo compilador do Java, ou seja, serve para 
que os desenvolvedores escrevam informações pertinentes no código, seja para 
identificar o que um determinado trecho de código faz ou outra informação qualquer. 
Também podemos criar comentários de várias linhas em Java. Neste caso, o comentário 
é realizado utilizando um bloco, conforme exemplo abaixo (o comentário inicia com 
/* e é finalizado com */):
/* Início do comentário,
Segunda linha do comentário e o
Final do comentário */
Uma variável é basicamente um recipiente que possui um determinado 
tipo, sendo que este define o tipo de dado que a variável irá armazenar. Isso se 
deve ao fato de a linguagem Java ser estaticamente “tipada”, ou seja, devemos 
informar ao Java o tipo da variável que estamos definindo. Abaixo temos um 
exemplo:
String Cliente = "Alberto Ribeiro";
No exemplo acima, criamos uma variável do tipo String, cujo nome é 
Cliente. Ainda podemos identificar o operador de atribuição = (veremos 
adiante outros operadores, sendo o operador de atribuição = um dos mais 
básicos da linguagem Java) e o valor que está sendo atribuído Alberto 
Ribeiro, no final temos o identificador do final do comando ;. Ou seja, 
na variável Cliente temos o texto indicado, sendo o valor armazenado na 
variável que criamos.
Linguagem Java: conceitos essenciais4
O conceito básico de uma classe é apresentado abaixo, em que temos 
uma classe Pessoa com um atributo do tipo String chamado nome e um 
construtor (void Pessoa(String nome)) que inicializa o atributo nome 
com o valor, passado no construtor:
class Pessoa {
 String nome;
 Pessoa(String nome) {
 this.nome = nome;
 }
}
Observe, no exemplo acima, a declaração this. Quando utilizamos essa 
declaração, estamos informando que o atributo utilizado está declarado na 
classe. Logo, this.nome pertence à classe e nome se refere ao parâmetro 
passado ao construtor. 
Abaixo, podemos observar um modelo conceitual de classes,
[class|abstract|interface] [Nome da Classe] {
[Construtor]
[Atributos ou Variáveis]
[Métodos]
}
em que:
 � [class|abstract|interface] — refere-se ao tipo, que pode ser 
class, ou seja, uma classe do tipo class, ou uma interface, sendo que 
este define uma espécie de padrão ou interface padrão que uma classe 
deve implementar. Ainda possuímos a abstract class, que é uma 
classe abstrata, sendo que esta pode conter métodos implementados e 
não implementados (os conceitos de interface e classe abstrata serão 
desenvolvidos no decorrer deste capitulo);
 � [Nome da Classe] — deve ser único no pacote atual e seguir as 
mesmas regras de nomenclatura dos métodos;
5Linguagem Java: conceitos essenciais
 � [Construtor] — um método que é chamado por padrão ao utilizar 
(instanciar) uma classe, sendo que este método pode inicializar os 
atributos da classe ou simplesmente não conter implementação alguma. 
Deve possuir o mesmo nome da classe e sua existência é obrigatória, 
mesmo que não contenha implementação, no caso de se tratar de uma 
interface que não possui nenhum construtor;
 � [Métodos] — segue o padrão já mencionado anteriormente para 
métodos, com a diferença de que, em interfaces, não temos a imple-
mentação do método, apenas sua definição. Os exemplos ficariam 
void Calcula ();, float ValorPI(); e float Total (int 
Qtd, flota Preco); e a classe que implementar essa interface 
deve também realizar a implementação destes métodos.
As classes em Java, além das variáveis e dos atributos, possuem ainda 
métodos, sendo que os métodos podem realizar diversos comandos. A estrutura 
de um método pode ser observada abaixo:
[retorno] [nome do método]([tipo dos dados] [nome do parâme-
tro], …) {
[código do método]
[return] [valor do retorno]
}
Observe, a seguir, o que significa cada termo da estrutura de um método, 
como vimos acima:
 � [retorno] — é o tipo de dado (seja ele primitivo ou do tipo referência) 
que o método irá retornar. Uma vez informado, é obrigatório que seja 
retornado um valor. Para não retornar nenhum valor, informamos ao 
invés do tipo da variável a palavra void, que significa que nada será 
retornado;
 � [nome do método] — nome que remeta à funcionalidade do método. 
As únicas ressalvas ao nomear o método são que caracteres especiais 
e espaços não devem ser utilizados e o nome do método não pode 
conter espaços. Neste caso, podemos utilizar o caractere underline (por 
exemplo, Nome _ Pessoa);
 � [tipo dos dados] [nome do parâmetro] — um método pode 
não possuir parâmetros. Neste caso, utilizam-se os ( ), sem nenhuma 
informação entre os parênteses. Porém, podemos informar um ou mais 
Linguagem Java: conceitos essenciais6
parâmetros, em que o tipo de dados deve ser informado logo após o nome 
do parâmetro, que segue a mesma regra de nomenclatura do método, 
sendo que as várias declarações de parâmetros devem ser separadas 
por ,. Observe que os parâmetros devem receber diferentes nomes;
 � [código do método] — conjunto de códigos que o método realiza;
 � [return] [valor do retorno] — esta linha pode não existir se 
o retorno do método for void. Porém, caso um retorno seja informado, 
o comando return seguido do valor ou da variável do mesmo tipo do 
retorno deve ser também informado.
Exemplo 1 Exemplo 2 Exemplo 3
class Area {
 float area;
 float lado;
 void 
Calcula (){
 this.Area 
= this.Lado 
* this.Lado
 }
}
class Valores {
 float 
ValorPI(){
 return 3.14f;
 }
}
class Produto {
 float Total 
(int Qtd, 
float Preco){
 return 
Qtd * Preco;
 }
}
Quadro 1. Exemplos de métodos
No Quadro 1 observamos três exemplos de possíveis métodos:
 � exemplo 1 — o this indica que as variáveis do método pertencem 
à classe a qual o método também pertence e, no caso, o método está 
atribuindo ao atributo area o resultado da operação de multiplicação 
(representada pelo operador de multiplicação *) do atributo lado por 
ele mesmo (possivelmente seria a área de um quadrado, portanto os 
lados seriam iguais, assim basta armazenar o tamanho de um lado);
 � exemplo 2 — método que retorna um valor do tipo float, no qual temos 
o retorno do valor 3.14f , em que f indica que o valor é do tipo float;
 � exemplo 3 — o método Total recebe dois parâmetros Qtd e Preco, 
realizando a multiplicação desses valores, retornando o resultado deste 
cálculo.
7Linguagem Java: conceitos essenciais
Conceitos e modificadores
Segundo Deitel, Deitel e Wald (2016), na linguagem Java está disponível um 
recurso muito importante para o desenvolvimento e a estruturação de um pro-
jeto: os moderadores de acesso. Estes são empregados para restringir o acesso 
a um método, atributo ou até a uma classe. Entretanto, independentemente do 
moderador escolhido, um atributo ou método é sempre acessível, isto é, pode 
ser chamado, a partir de qualquer outro método contido na mesma classe. Os 
moderadores de acesso mais comuns do Java são os seguintes:
 � public — um atributo ou método que utiliza este moderador é público 
e pode ser chamado a partir de métodos contidos em qualquer outra 
classe, sendo esta a condição de menor restrição da linguagem;
 � protected — utilizando este moderador, o atributo ou método pro-
tegido pode ser chamado por todas as classes existentes no pacote da 
classe em questão; 
 � private — quando um atributo ou um método é privativo na classe 
que o contém e seu uso é vedado a qualquer outra classe, ou seja, so-
mente métodos daprópria classe podem executar uma chamada a este. 
Java é uma linguagem amplamente utilizada em diversas áreas, não somente para 
programação Android, mas também em desenvolvimentos para desktops, Web e 
outros. Nos links a seguir você pode acessar o site oficial do Java, além da página com 
a documentação da linguagem e outras informações.
https://qrgo.page.link/E4PEm
https://qrgo.page.link/yaAq8
Além dos moderadores de acesso, os métodos e atributos ainda possuem 
outros modificadores, voltados a outras características. Um destes modifica-
dores é o modificador static, que pode ser utilizado em classes, métodos 
e atributos. Uma vez utilizado em um método, este poderá ser acessado por 
qualquer classe (observando o moderador de acesso) sem a necessidade de 
instanciá-la. Um método static não pode acessar qualquer variável decla-
Linguagem Java: conceitos essenciais8
rada dentro de uma classe, exceto no caso de a variável também ser declarada 
como static. Mas a situação contrária é permitida: um método comum pode 
acessar métodos e atributos static.
Abaixo, temos um exemplo de método do tipo static com o nome getPI. 
Observe que não instanciamos a classe Area:
public class Area {
 public static float getPI(){
 return 3.14f;
 }
}
// Podemos utilizá-lo da seguinte maneira:
Area.getPI();
Outro detalhe sobre o modificador static é que, uma vez utilizado em 
uma classe (static class), obrigatoriamente toda a classe (incluindo 
métodos e atributos) deve ser declarada com o modificador static.
Segundo Goodrich e Tamassia (2013), alguns dos conceitos mais importan-
tes da linguagem Java são o encapsulamento, a herança e o polimorfismo. O 
encapsulamento é uma característica muito importante que trata da capacidade 
de isolar informações do restante do programa. Assim, uma vez construída 
uma determinada classe, o desenvolvedor não precisa mais se preocupar com 
suas características internas, já que realiza as chamadas dos métodos. Caso 
seja necessário realizar alguma alteração em um método, ao realizar esta 
alteração todos os pontos que o utilizam automaticamente irão receber tais 
alterações. Dessa forma, o desenvolvedor pode garantir que a informação não 
será corrompida acidentalmente pelo resto do programa, tornando-a robusta 
e confiável.
Para um desenvolvedor experiente, o conceito de modificadores pode ser muito 
simples, mas para desenvolvedores sem tanta experiência, o uso de modificadores 
pode ser bem confuso. Ao iniciar a programação de aplicativos sem conhecer a fundo 
a linguagem de programação, procure utilizar modificadores mais simples, como o 
public e o private. À medida que for adquirindo experiência, aventure-se a utilizar 
modificadores mais complexos.
9Linguagem Java: conceitos essenciais
A herança é um conceito importante da linguagem Java. Nesse processo, 
uma classe que implementa ou é estendida a outra herda todos os seus métodos 
e atributos. Na Figura 2 temos um exemplo clássico de herança, em que a 
classe Animal é estendida à classe Mamífero, que por sua vez é estendida 
à classe Cachorro. Ao instanciar uma classe Cachorro, este poderá utilizar 
os métodos nascer, morrer e mamar, pois estes serão herdados das classes 
Animal (métodos nascer e morrer) e Mamífero (método mamar). 
Para criar uma classe Gato, por exemplo, seria necessário apenas estendê-la 
à classe Mamífero e implementar o método miar.
Figura 2. Exemplo de classes Java, demonstrando o conceito 
de herança.
Linguagem Java: conceitos essenciais10
Temos, ainda, o modificador abstract, no qual é possível declarar um 
método sem o implementar. Dessa forma, uma classe que implementa a classe 
que contém métodos abstract deve repetir sua declaração abstrata, imple-
mentando-a ou não; porém, em algum momento ela deve ser implementada. 
Funciona como uma espécie de lembrete para que alguma classe derivada 
complete a declaração fornecendo um corpo. 
Na Figura 3 temos um exemplo de classe abstrata, em que a classe Animal 
é do tipo abstract e já possui os métodos nascer e mamar implemen-
tados. No entanto, os métodos voz e alimentar são abstratos e devem ser 
implementados em classes que forem estendidas à classe Animal. No caso, a 
classe Cachorro foi estendida à classe Animal e implementou os métodos 
abstratos voz e alimentar com a implementação adequada.
Figura 3. Exemplo de classes Java, demonstrando o conceito 
de classe abstrata.
11Linguagem Java: conceitos essenciais
O modificador final identifica que nenhuma classe derivada pode alterar 
ou redefinir este método ou atributo. Dessa forma, um método declarado 
como final deve ser obrigatoriamente implementado. No exemplo abaixo, uma 
classe estendida à classe Area não poderá criar uma nova implementação 
para o método getPI.
public class Area {
 public final float getPI(){
 return 3.14f;
 }
}
Segundo Deitel, Deitel e Deitel (2015), a interface é uma funcionalidade 
da orientação ao objeto utilizado em Java que define ações que devem ser 
obrigatoriamente executadas, mas que cada classe pode executar de forma 
diferente. As interfaces contém valores constantes ou assinaturas de métodos 
que devem ser implementados dentro de uma classe.
No caso da Figura 4, podemos observar ainda uma utilização prática das 
interfaces, em que a interface InterfacePessoa prevê todos os métodos 
necessários para uma determinada implementação, sendo que esta interface 
foi implementada pela classe abstrata Pessoa, que implementou os métodos 
getIdade e setIdade, visto que em uma implementação das classes 
Mulher e Homem os métodos indicados teriam uma implementação idêntica 
para ambos os objetos, podendo, dessa forma, serem herdados por estes. 
Uma peculiaridade está no método getSexo, cuja implementação se deu 
na classe Mulher e Homem, em virtude dessa informação ser diferente em 
ambos os casos.
Linguagem Java: conceitos essenciais12
Figura 4. Exemplo de classes Java, demonstrando a utilização de interfaces.
Um dos conceitos mais utilizados da linguagem Java é o polimorfismo, 
que promove a reutilização contínua dos códigos, ou seja, possibilita que 
algo assuma várias formas. No contexto da programação orientada a objetos 
(sendo o Java, conforme já mencionado, uma linguagem totalmente orientada a 
objetos), ele nos mostra como um método pode assumir formas diferentes das 
inicialmente implementadas e agir de modo que possa ser utilizado por outra 
classe. Na Figura 2, em que observamos o conceito de herança (os conceitos de 
herança e polimorfismo trabalham lado a lado na linguagem Java), podemos 
observar o conceito de polimorfismo também quando a classe Pessoa assume 
a forma das classes Homem e Mulher.
13Linguagem Java: conceitos essenciais
Na Figura 5 podemos identificar outra face do polimorfismo. No exemplo, 
os métodos ImprimeIdade, ImprimeSexo e ImprimeSexoIdade 
recebem, por parâmetro, uma classe Pessoa, sendo que esta pode ser do tipo 
Mulher ou Homem e, de acordo com essa passagem de parâmetros, podemos 
ter a impressão do respectivo sexo e idade (a idade, no caso, depende do valor 
atribuído à variável Idade, presente na classe Pessoa). Essa passagem de 
parâmetro genérica se dá pelo fato de que uma mulher ou um homem são 
pessoas, caracterizando um conceito do polimorfismo.
Figura 5. Exemplo de classes Java, demonstrando o conceito de polimorfismo.
Outro conceito do polimorfismo presente na Figura 5 é a sobrecarga, em 
que possuímos na classe Auxiliar três métodos imprime e somente é 
possível possuir estes três métodos com o mesmo nome, em virtude dos métodos 
possuírem parâmetros diferentes. No caso, o método imprime, que realiza a 
impressão da idade, recebe um parâmetro do tipo int, enquanto o método que 
realiza a impressão do sexo recebe um parâmetro do tipo String. Frente à 
Linguagem Java: conceitos essenciais14
sobrecarga prevista no polimorfismo, eles são diferentes; logo, são permitidos. 
Ainda temos o caso do método Imprime, que recebe dois parâmetros que 
se diferenciamainda mais dos outros e, com isso, também se tornam válidos.
Java na prática: operadores, condicionais, 
laços de repetição
Na linguagem Java é muito comum a realização de cálculos matemáticos ou uma 
comparação entre variáveis, assim como a repetição de uma determinada rotina 
até que uma condição seja atingida. Para que isso seja possível, o Java possui 
operadores. Na Figura 6 podemos observar esses operadores disponíveis na lingua-
gem Java (na ilustração eles estão divididos em grupos, conforme suas funções).
Figura 6. Tipos de operadores disponíveis na linguagem Java.
Fonte: Schützer e Massago (2008, documento on-line).
Segundo Deitel, Deitel e Deitel (2015), os operadores de atribuição, como 
o próprio nome sugere, são capazes de atribuir um determinado valor a algo, 
normalmente uma variável. Um exemplo seria uma variável x do tipo inteiro 
(no caso int), à qual podemos atribuir o valor 10 utilizando a simples ex-
pressão x = 10. Aliado a este operador de atribuição, temos os operadores 
de adição, subtração e divisão. Na Figura 7 é possível observar operações 
de adição (operador +), subtração (operador -), multiplicação (operador *) 
e divisão (operador /), além de uma operação envolvendo duas variáveis. 
Existe, ainda, o operador módulo %, que calcula o resto de uma divisão. Por 
exemplo, x = 5 % 2, em que x ao final da operação será igual a 1, visto 
que este é o resto da divisão.
15Linguagem Java: conceitos essenciais
Podemos, ainda, utilizar o operador de atribuição = combinado aos ope-
radores matemáticos, resultando em expressões mais simples. Por exemplo, 
a expressão de soma x = x + 10 (operação de soma existente na Figura 7) 
poderia ser codificada utilizando o operador de soma combinado ao operador 
de atribuição, gerando a expressão x += 10, que é exatamente o mesmo que 
x = x + 10, sendo que este pode ser realizado com as demais operações 
matemáticas.
Figura 7. Operador de atribuição = em operações matemáticas.
Também temos operações de atribuição que não utilizam o operador =. 
Neste caso, estamos falando dos operadores de incremento e decremento. Por 
exemplo, a operação x = x + 1, que também é idêntica à operação x += 1, 
pode ser escrita de forma ainda mais simplificada, utilizando o operador 
unário de incremento, resultando em x++. Em todos os exemplos citados serão 
somados 1 ao valor já existente em x.
Os sinais unários são utilizados para identificar se um número é positivo 
(sinal unário +) ou negativo (sinal unário -), sendo que ao não informar o 
sinal unário de um número, o programa irá entender que se trata de um nú-
mero positivo. Vamos imaginar a variável do tipo byte recebendo o valor 10 
negativo. Neste caso, teríamos o código byte z = -10, ou seja, a variável 
z será igual a 10 negativo.
Linguagem Java: conceitos essenciais16
Ao declarar os nomes de variáveis e classes, você deve tomar cuidado para não uti-
lizar as palavras reservadas da linguagem Java. Por exemplo, a palavra int deve ser 
utilizada somente em seu propósito original, ou seja, declarar uma variável deste 
tipo. Portanto, você não pode colocar o nome de uma variável como int. A seguir, 
temos uma lista de palavras reservadas da linguagem: abstract, continue, for, 
new, switch, assert, default, goto, package, synchronized, boolean, 
do, if, private, this, break, double, implements, protected, throw, 
byte, else, import, public, throws, case, enum, instanceof, return, 
transient, catch, extends, int, short, try, char, final, interface, 
static, void, class, finally, long, strictfp(2), volatile, const, 
float, native, super e while.
Deitel, Deitel e Deitel (2015) definem os operadores de comparação como 
ferramentas de suma importância para o desenvolvimento de qualquer software, 
seja ele um aplicativo Android ou outro. Essa afirmação se deve ao fato de 
que estes operadores fornecem a linguagem o poder de dar ao código a to-
mada de decisão. Por exemplo, se você deseja comprar um produto que custa 
R$ 12,00 mas possui apenas R$ 10,00 na carteira, a compra não pode ser 
concluída, visto que você não possui dinheiro suficiente. Para inserirmos essa 
tomada de decisão em um código Java, utilizamos a cláusula condicional if, 
que significa “se”. Assim, em uma linguagem formal, já podemos escrever 
o exemplo, ficando “se o dinheiro na carteira for maior ou igual ao valor do 
produto, então a compra pode ser realizada; caso contrário, você não possui 
dinheiro suficiente”. Em Java, teríamos:
float produto = 12f;
float carteira = 10f;
if (carteira >= produto) {
// Entao você possui dinheiro suficiente
}
else {
//Você não pode comprar, dinheiro insuficiente
}
//Segue o fluxo do programa
17Linguagem Java: conceitos essenciais
Dessa forma, já introduzimos também o operador de comparação maior 
ou igual >=. Podemos utilizar também os demais operadores de comparação:
 � >: compara se um valor é maior que outro;
 � <: compara se um valor é menor que outro;
 � <=: compara se um valor é menor ou igual a outro;
 � ==: comparação simples entre dois valores, verificando se ambos são 
iguais e apenas iguais;
 � !=: comparação simples entre dois valores, verificando se ambos são 
diferentes.
A cláusula if pode possuir várias operações de comparação utilizando a 
cláusula elseif(comparação), ou seja, podemos ter o if(comparação 1) 
com a sua comparação, seguido de quantos elseif(comparação2..3..4) 
forem necessários para a lógica do programa, podendo finalizar com o else, 
que significando que caso nenhuma comparação seja satisfeita, o código 
da cláusula else será executado, observando também que somente o if 
é obrigatório. Portanto, podemos utilizar o elseif e o else apenas se na 
lógica da rotina for necessário.
Dentro das cláusulas condicionais, ainda possuímos a cláusula switch, que pode 
simplificar a execução de várias comparações de uma variável. No link a seguir você 
pode obter mais informações sobre a cláusula switch.
https://qrgo.page.link/ungAZ
Para completar este conjunto de operações visto até então, temos os laços 
de repetição, sendo o mais simples deles o while, que em uma linguagem 
formal seria “enquanto uma comparação for satisfeita, repete um conjunto 
de código”. 
Linguagem Java: conceitos essenciais18
Figura 8. Exemplos de operação de “while” e de “do...while”.
Fonte: Schützer e Massago (2008, documento on-line).
Na Figura 8, encontramos alguns exemplos do bloco de repetição while, 
sendo:
 � exemplo 1 — a rotina presente no while é executada enquanto o 
valor de k for menor que 10, ou seja, será executado até que k seja 
incrementado pelo operador unário ++ e atingir o valor 10;
 � exemplo 2 — nesta rotina, h é inicializado com zero e a rotina presente 
no while será executada até que h mude para outro valor, sendo que, 
no caso, isso ocorrerá somente quando o teste if for satisfeito; 
 � exemplo 3 — a variável i é inicializada com o valor 10 e, assim, o 
bloco while não é executado, pois somente seria executado caso i 
fosse menor ou igual a cinco. Dessa forma, o programa segue seu fluxo 
normal após o while;
 � exemplo 4 — no do while, a rotina presente neste bloco é executada 
pelo menos uma vez, podendo repetir novamente se ao final da primeira 
execução o teste do while for satisfeito. No exemplo, a rotina será 
executada apenas uma vez.
19Linguagem Java: conceitos essenciais
O laço de repetição for tem uma complexidade um pouco maior. Na Figura 9 
temos um exemplo ilustrado de uma implementação do laço for. Para um 
melhor entendimento, vejamos mais informações abaixo:
 � int x = 0; — este código é executado apenas uma vez e é chamado 
de inicialização. Nesta inicialização temos a declaração da variável x 
e sua inicialização com o valor zero, sendo que ela não será executada 
novamente. Observe que a variável x poderia estar declarada em outro 
local e, neste caso, ela poderia ser inicializada apenas com x = 0; ou 
nem ser inicializada, contando apenas com a presença do ;;
 � x <= 10; — esta é a condição que verifica se olaço deve ser repetido. 
Após a inicialização ele é verificado e, caso seja satisfeito, a rotina do 
laço é executada uma vez;
 � x++ — este é o incremento (poderia ser decrementado, também utili-
zando -- ou outros operadores, como o += 10) ao final da execução 
da rotina do laço de repetição. A variável x é incrementada e após o 
seu incremento a condição (x <= 10) é verificada, ou seja, quando x 
atingir o valor 11, o laço de repetição não será repetido e o programa 
seguirá seu fluxo.
Figura 9. Ilustração do uso do for.
Fonte: Schützer e Massago (2008, documento on-line).
É importante salientar que os laços de repetição while e for também 
podem ser interrompidos a qualquer momento, executando o comando break;. 
Linguagem Java: conceitos essenciais20
DEITEL, P.; DEITEL, H.; DEITEL, A. Android: como programar. 2. ed. Porto Alegre: Book-
man, 2015. 690 p.
DEITEL, P.; DEITEL, H.; WALD, A. Android 6 para programadores: uma abordagem baseada 
em aplicativos. 3. ed. Porto Alegre: Bookman, 2016. 618 p.
GOODRICH, M. T.; TAMASSIA, R. Estruturas de dados e algoritmos em Java. 5. ed. Porto 
Alegre: Bookman, 2013. 736 p.
SCHÜTZER, W.; MASSAGO, S. Tipos de dados. In: SCHÜTZER, W.; MASSAGO, S. Tutorial 
de programação Java. São Carlos: Departamento de Matemática, Universidade Federal 
de São Carlos, 2008. Disponível em: https://www.dm.ufscar.br/profs/waldeck/curso/
java/part22.html. Acesso em: 16 jun. 2019.
Leitura recomendada
SCHILDT, H. Java para iniciantes: crie, compile e execute programas Java rapidamente. 
6. ed. Porto Alegre: Bookman, 2015. 704 p.
21Linguagem Java: conceitos essenciais
DESENVOLVIMENTO 
PARA DISPOSITIVOS 
MÓVEIS
Diego Bittencourt de Oliveira 
Componentes dos 
aplicativos Android
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
 � Identificar os principais componentes dos aplicativos Android.
 � Descrever os componentes activities, services, intents, content providers 
e broadcast receivers.
 � Comparar os papéis dos vários componentes de um aplicativo Android.
Introdução
Neste capítulo, você irá conhecer a estrutura dos componentes que 
formam um aplicativo Android, verificando como este é executado e 
gerenciado em vários aspectos como, por exemplo, suas permissões.
Conheceremos os quatro componentes-base que formam um apli-
cativo, no caso, as activities, os services, os broadcast receivers e os content 
providers, explorando as funcionalidades que estes fornecem para o 
desenvolvimento de um aplicativo. Ainda veremos como funciona um 
intent e como este é utilizado na comunicação dos componentes do apli-
cativo, do aplicativo com o sistema Android e com os demais aplicativos 
instalados no dispositivo.
Principais componentes de um aplicativo 
Android
Segundo Deitel, Deitel e Wald (2016), os aplicativos Android são desenvolvidos 
em linguagem de programação Java. Nesta linguagem, as ferramentas do 
Android SDK realizam a compilação do código junto a todos os arquivos de 
dados e recursos. Assim é gerado o chamado APK, um pacote Android em 
formato de arquivo com a extensão .apk.
Um arquivo APK carrega todo o conteúdo de um aplicativo Android, sendo 
estes arquivos utilizados pelos dispositivos que portam o sistema operacional 
Android para instalar o aplicativo neles. Uma vez instalado no dispositivo, 
cada aplicativo possui as características listadas a seguir.
 � O sistema operacional Android é baseado em um sistema Linux mul-
tiusuário, em que cada aplicativo corresponde a um usuário diferente.
 � Um identificador de usuário (também chamado de ID) é criado e atri-
buído a cada aplicativo pelo sistema Linux. Dessa forma, o sistema 
define as permissões para todos os arquivos de um aplicativo em que 
somente o ID atribuído a este pode acessar seus arquivos.
 � Cada processo possui sua própria máquina virtual (também chamada 
de VM), fazendo com que cada aplicativo seja executado de forma 
isolada dos demais.
 � Cada aplicativo é executado no próprio processo Linux por padrão. O 
processo é iniciado pelo Android quando este necessita de um compo-
nente do aplicativo e, em seguida, o encerra quando não mais neces-
sário ou quando o sistema necessitar liberar memória para os demais 
aplicativos.
Um aplicativo Android também possui um identificador do tipo ID para o aplicativo, 
amplamente utilizado em seu projeto. Para mais informações sobre o ID de aplicativo, 
acesse o link a seguir.
https://qrgo.page.link/8tx5Z
Por estas características o Android implementa o princípio do privilégio 
mínimo, em que cada aplicativo tem acesso somente aos componentes ne-
cessários para a execução de seu trabalho. Dessa forma, o Android cria um 
ambiente seguro, no qual o aplicativo não pode acessar partes do sistema às 
quais não possui permissão.
Componentes dos aplicativos Android2
Um aplicativo pode compartilhar dados com outros aplicativos ou acessar 
e compartilhar dados com o sistema da seguinte maneira:
 � compartilhando o mesmo ID de usuário do Linux, assim ambos serão 
capazes de acessar arquivos um do outro;
 � solicitando permissão para acessar dados do dispositivo, como contatos 
de usuário, mensagens SMS, câmera, bluetooth, entre outras permis-
sões. Nesse caso, o usuário necessita conceder acesso a estes recursos 
de forma manual. A Figura 1 ilustra uma solicitação de permissões na 
instalação do aplicativo. No exemplo, temos a solicitação de acesso aos 
contatos, à localização e ao microfone.
Figura 1. Solicitação de permissões ao instalar 
um aplicativo.
Fonte: Permissions... (2019, documento on-line).
3Componentes dos aplicativos Android
Você pode obter mais informações sobre as diversas permissões que o Android possui 
pelo link a seguir.
https://qrgo.page.link/EeDSm
Estas são informações básicas sobre como um aplicativo Android é tratado 
dentro do ambiente Linux, que é a base do sistema Android. Um aplicativo 
é definido como um conjunto de componentes, que são as estruturas funda-
mentais que definem o aplicativo.
Deitel, Deitel e Deitel (2015) definem os componentes como blocos que 
compõem uma aplicação Android, sendo estes declarados no arquivo de ma-
nifesto do projeto, que além desta declaração ainda possui configurações do 
aplicativo e configurações dos componentes. Cada componente é um ponto de 
entrada ao aplicativo, porém nem todos os componentes são pontos de entrada 
reais para o usuário, visto que em alguns casos uns dependem dos outros.
O manifesto é um arquivo de suma importância para o projeto Android. Configurações 
importantes são realizadas por meio deste manifesto e muitos comportamentos do 
projeto são definidos neste arquivo. Para obter mais informações, acesse o link a seguir.
https://qrgo.page.link/pfrbC
Segundo a Android, seus projetos possuem quatro componentes básicos, 
conforme a seguir.
 � Activities (atividades): representam uma tela com uma interface de 
usuário.
 � Services (serviços): componentes executados em segundo plano para 
realizar operações de longa execução ou processos de trabalho remotos.
Componentes dos aplicativos Android4
 � Content providers (provedores de conteúdo): gerenciam um conjunto 
compartilhado de dados.
 � Broadcast receiver (receptores de transmissão): componentes que 
respondem a anúncios de transmissão por todo o sistema.
A Figura 2 representa um exemplo de pacote de componentes de um apli-
cativo Android. Neste exemplo, podemos observar que o pacote é composto 
por activities, services, content providers e broadcast receivers, o que não 
dita nenhuma regra, pois é possível projetar um aplicativo que não possua 
nenhum service, por exemplo. Logo, a ocorrência destes componentes se dá 
conforme a necessidade de implementá-los para que as funcionalidades da 
solução sejam contempladas.
Figura 2. Exemplo de aplicativo Android com seus componentes.
Activities, services e intents
Simon (2011) explica que um activity é um modulo único e independente que 
na maioria das vezes está diretamente relacionado a uma

Outros materiais