Escolar Documentos
Profissional Documentos
Cultura Documentos
Activity ............................................................................................................................ 53
Fragments ....................................................................................................................... 54
AppCompat..................................................................................................................... 54
Navigation ...................................................................................................................... 55
2
Lifecycles, ViewModel e LiveData .................................................................................. 55
Room .............................................................................................................................. 56
Testing ............................................................................................................................ 57
Compose ......................................................................................................................... 58
Koin................................................................................................................................. 59
Retrofit ........................................................................................................................... 59
Gson................................................................................................................................ 60
Referências .............................................................................................................. 76
3
1
Capítulo 1. Apresentação e histórico
Dispositivos Móveis
Em 1998, (Mateus & Loureiro, 1998, 1) iniciam o livro dizendo que nas
últimas décadas tem acontecido um crescimento extraordinário nas áreas de serviços
via satélite, comunicação celular e redes locais sem fio, o que permitirá o acesso a
informações e recursos de qualquer lugar, a qualquer momento. Os autores
continuam, e dizem que em alguns anos os laptops e PDAs serão a realidade de
milhões de pessoas, permitindo que estas estabeleçam a comunicação com a parte
fixa da rede ou mesmo com outros dispositivos portáteis. Este modelo computacional
é conhecido como computação móvel (Figueiredo and Nakamura 2003, 21) (Junior
and De Oliveira 2019).
1
https://pt.wikipedia.org/wiki/Motorola_DynaTAC
5
Na década seguinte, houve a redução de tamanho dos dispositivos, e o GSM
foi implantado na Europa; com isso, os celulares passaram a ser produzidos em
massa. Neste período, também foi lançado o Nokia 1011, e os aparelhos passaram a
ter SMS e jogos simples.
6
monitoramento de atividades físicas, telas em HD, reconhecimento facial,
reconhecimento de digitais etc.
Em seguida, de 2015 – 2018, iniciou-se o ciclo das telas grandes. Com o 4G,
passamos a consumir os serviços de streaming, exigindo telas maiores e com maior
qualidade. A tela do iPhone cresce 57% em relação à versão original. Iniciamos os
pagamentos com smartphones, e foi lançado o reconhecimento da digital direto na
tela.
Fonte: https://www.researchgate.net/figure/Figura-4-Evolucao-dos-
celulares_fig3_334376415.
7
Figura 2 – Desafios do desenvolvimento de aplicações para dispositivos móveis.
Evolução do Android
Fonte: https://bayton.org/docs/enterprise-mobility/android/android-version-evolution-
graphics/.
8
sincronização do Gmail, Google Maps e outros. A versão 2 da API, Android 1.1, foi
lançada em 2008 e adiciona suporte a comentários no Google Maps e permissão para
salvar texto anexo em mensagens. A próxima atualização do Android é a 1.5, e inicia
a tradição dos codinomes baseados em doces. Ela ficou conhecida como Cupcake, API
3, e trouxe o novo Kernel 2.6.27. Com ela, vieram melhorias na interface do usuário,
suporte a teclado virtual, autorrotação da tela etc. A última atualização do Android 1
foi a API 4, também chamada de ``Donut''. Um novo Kernel foi introduzido, agora na
versão 2.6.29, e permite a entrada de texto por voz, por exemplo.
A versão 2.0 traz várias atualizações, as duas primeiras sob codinome Eclair,
implementa as APIs 6 e 7, com melhorias na api e correções de bugs. A versão 2.2,
Froyo, implementa uma nova versão do Kernel, 2.6.32 e conta com otimização de
memória e desempenho e melhorias na velocidade das aplicações, por exemplo. Em
seguida, o Gingerbread, com as APIs 9 e 10, apresenta o Kernel 2.6.35, com melhorias
na interface de usuário, correção de bugs e eficiência de bateria.
9
passa a ter suporte para processadores de 64 bits, implementa uma nova interface
de usuário e chamada de voz em alta definição. O Android 6, API 23, implementa o
novo modo de economia de energia que reduz a velocidade do CPU quando a tela
está desligada. Também traz uma nova barra de pesquisa de aplicativos favoritos e
um sistema de permissões pós-instalação, dando maior autonomia ao usuário.
2
Near field communication
10
2
Capítulo 2. Instalação e configuração de ferramentas
O Android Studio é a IDE padrão utilizada no desenvolvimento de todos os
tipos de aplicativos Android há muitos anos. Ela é baseada na IntelliJ IDEA, e oferece
todos os recursos necessários para melhorar sua produtividade durante o processo
de desenvolvimento de aplicações. O download desta ferramenta deve ser realizado
direto do site oficial3, que está ilustrado na figura 4.
Fonte: https://bayton.org/docs/enterprise-mobility/android/android-version-evolution-
graphics/.
Após clicar no botão Download Android Studio, você será direcionado para
outra tela, onde haverá outro botão com o mesmo nome. Ele lhe levará aos termos e
condições de uso, que devem ser aceitos para liberação do download. Salve o arquivo
na pasta Downloads do seu usuário e aguarde o final do procedimento. É importante
observar se seu computador atende aos requisitos mínimos necessários para a
instalação; eles estão disponíveis no final da página do Android Studio e replicados na
figura 5.
3
https://developer.android.com/
12
O processo de instalação é simples, bastando seguir os passos exibidos pelo
utilitário de instalação. Neste link estão disponíveis informações para cada sistema
operacional suportado: https://developer.android.com/studio/install.
Fonte: https://developer.android.com/studio.
4
Ela pode variar de acordo com o sistema operacional utilizado, ou a versão da IDE.
13
Figura 6 – Tela inicial do android studio.
• Save location: (mantenha o padrão) - Local onde seu código será salvo.
• Minimum SDK: API 24: Android 7.0 (Nougat) - Versão mínima do Android
necessária para executar o aplicativo. A escolha deve ser baseada no volume
de usuários que se deseja atingir e nos recursos que sua aplicação precisa
para ser executada. O Android Studio lhe ajuda na escolha, clique na opção
Help me choose.
14
Estrutura do projeto
Cada módulo do projeto tem por padrão as pastas: manifest – que contém o
arquivo AndroidManifest.XML, este é o coração da aplicação, e contém registro de
todas as activities desenvolvidas; java – apesar da linguagem oficial ser o Kotlin,
todos os arquivos de código são incluídos nesta pasta, inclusive os arquivos de teste
unitário e teste instrumentado; res – esta é a pasta de recursos, ela armazena os
arquivos de layout em formato XML, o arquivo de string e imagens, por exemplo. Este
modo de visualização pode ser alterado para outros, como a visão de projeto, similar
à visão do projeto do Eclipse.
15
Interface dos Usuários
16
6. Barra de status: exibe o status do seu projeto e da própria IDE. Avisos
também serão exibidos aqui.
17
Figura 9 – Criando um dispositivo virtual.
Na tela seguinte, basta clicar em Finish e você já tem uma máquina virtual
para praticar. Uma observação relevante é que, se o computador utilizado para as
aulas possuir entre quatro e oito gigabytes de memória RAM, ficará mais confortável
a execução de testes em um dispositivo físico, pois o emulador consome muitos
recursos da máquina. Agora, basta clicar no ícone Run App (símbolo de play, verde) e
aguardar o final do processo de build. Se nenhum erro for apresentado, seu ambiente
estará configurado e pronto para iniciarmos o processo de desenvolvimento.
18
3
Capítulo 3. Contexto Mercadológico
É inegável como os celulares se tornaram uma parte importante de nosso
cotidiano. Eles são utilizados para as mais diferentes tarefas. A consultoria (We are
social 2021) aponta em seu relatório que hoje, no mundo, somos aproximadamente
7.9 bilhões de pessoas, com 56,6% de urbanização, e que existem aproximadamente
5.3 bilhões pessoas com ao menos um celular. Este já é um bom motivo para se
investir no desenvolvimento de aplicações para dispositivos móveis. O relatório com
dados de outubro de 2021 aponta que os aplicativos mais usados são Facebook,
WhatsApp e Instagram. Olhando para o Brasil, somos 213 milhões de pessoas, com
taxa de urbanização igual a 87%. Em nosso país são 205.4 milhões de conexões
celulares ativas. Por aqui seguimos a tendência mundial, e os aplicativos mais usados
são WhatsApp, Facebook e Instagram.
20
Figura 10 – Mercado global de celulares/smartphones.
Fonte: (Statcounter).
Fonte: (Statcounter).
21
4
Capítulo 4. Desafios e tendências para aplicações móveis
Uma pesquisa realizada pela (Mobile Time, n.d.) apontou as principais
funcionalidades buscadas por brasileiros na compra de um novo smartphone.
Conforme ilustrado na figura 12, os principais requisitos são capacidade de
processamento, seguido pela capacidade de memória. Apesar destes fatores serem
importantes, eles não são os únicos a serem levados em consideração no
desenvolvimento de aplicações, conforme veremos neste capítulo.
23
dos smartwatches. Um ponto importante é o consumo adaptativo de
energia, afinal de contas, você está trabalhando com um dispositivo móvel
que funciona com bateria. O sistema operacional pode alterar seu
comportamento de acordo com a quantidade de energia restante e sua
aplicação precisa estar preparada para isso.
24
• Redes e sistemas distribuídos – O smartphone tem a maior parte de suas
funcionalidades vinculadas ao uso da internet, utilizando algum canal de
comunicação sem fio. É comum você começar a trabalhar em casa no wi-fi e
se deslocar para outra localidade, neste momento o aparelho vai alterar a
conexão para uma tecnologia celular. Isso pode interromper a troca de
dados se a aplicação não for bem estruturada.
Além destes desafios, existem ainda tendências, como o uso cada vez maior
de dispositivos vestíveis, como os smartwatches, sim, eles também têm uma versão
do Android desenvolvida especialmente para este cenário. A inteligência artificial
está nos dispositivos móveis. O Google possui APIs que permitem trabalhar com
Machine Learning diretamente no smartphone. Mais e mais serviços têm sido
oferecidos para nosso computador de bolso. Aproveite este momento para fazer uma
pesquisa e descobrir o que está sendo feito de mais recente neste cenário.
25
5
Capítulo 5. Plataforma, SDK e desenvolvimento mobile
Neste capítulo, discutiremos os termos plataforma, SDK, API e como eles
influenciam no desenvolvimento de aplicações para Android.
Este ambiente pode ser o hardware, como acontece no arduino, pode ser
um sistema operacional específico, como o Windows, ou uma outra plataforma de
software, como o Facebook. Cada plataforma possui diferentes níveis de abstração,
como quando o sistema operacional retira do usuário a necessidade de conhecer
profundamente o funcionamento do hardware.
27
Por outro lado, as plataformas de computação permitem esta interação do
usuário com o desenvolvedor. Platform Hunt, 2016, diz que em plataformas
tecnológicas o desenvolvedor “é dono” de seus usuários, enquanto as plataformas
computacionais é que “possuem” os usuários. Android, Microsoft Windows, Apple
iOS são exemplos de plataformas tecnológicas. Nelas a interação do usuário com o
produto, ou desenvolvedor, é geralmente realizada por intermédio de lojas de
aplicativos ou algum marketing place. É importante destacarmos que estas
plataformas geralmente trazem consigo as SDKs, APIs e outras ferramentas
necessárias para o desenvolvimento de software.
Desenvolvimento Mobile
Cada sistema operacional possui linguagem nativa, APIs, SDKs, IDEs e lojas
para disponibilização oficial dos APS, o que demanda o desenvolvimento de
diferentes versões do seu aplicativo, de acordo com a plataforma escolhida. Contudo,
28
eles possuem melhor performance e acesso direto a todas as funcionalidades do
dispositivo, além do visual nativo do ambiente (Pinheiro 2020) (Use mobile).
29
6
Capítulo 6. Criando nossa primeira aplicação móvel
Antes de prosseguir e criar um aplicativo, é preciso relembrar alguns
conceitos importantes, o projeto de um APP Android é dividido em várias pastas:
• manifest – nesta pasta está o arquivo que contém informações sobre todas
as activities do projeto. Ela também é utilizada para liberar acesso a pacotes
necessários de outras aplicações que serão chamadas pelo aplicativo. Isso é
necessário devido às mudanças de segurança aplicadas a partir do Android
11. A TAG <intent-filter> é necessária para customizar a forma como a
activity será iniciada; MAIN – significa que a activity pode ser iniciada
isoladamente, como ponto inicial da aplicação; LAUNCHER – indica que a
activity estará disponível para o usuário na tela inicial junto com outras
aplicações que o usuário possui.
31
São quatro componentes importantes nas aplicações Android:
32
Figura 12 – View e ViewGroup.
Fonte: https://developer.android.com.
Criando a aplicação
33
Neste momento, uma ferramenta útil é o Screen Copy (Genymobile),
desenvolvido e disponibilizado pela GenyMobile, em formato open source e gratuito.
Este aplicativo permite espelhar a tela do android direto no seu computador,
independentemente do sistema operacional utilizado. O Download pode ser feito na
página https://github.com/Genymobile/scrcpy, bastando escolher a versão de acordo
com o software instalado em seu computador. Depois de instalar, basta executar o
programa, se ele não exibir a tela, ou apresentar falha, abra o aplicativo pelo
terminal, utilizando o comando scrcpy --max-size 1024, que reduzirá a
resolução permitindo que você tenha acesso à tela. A segunda dica importante é,
uma vez aberto o emulador, não o feche, pois o processo de inicialização pode ser
bastante demorado.
34
Do lado direito da tela, temos três opções, Code, Split e Design. A guia Code
exibirá apenas o XML do arquivo de layout, a guia Design, que está ilustrado na figura
13, mostra o modo gráfico de edição, e o modo Split, como o nome indica, dividirá a
tela entre os dois modos. Todos os elementos disponíveis para criação da tela
estarão disponíveis na paleta (Palette), do lado esquerdo da IDE, bastando selecionar
o elemento desejado e arrastar para a tela. Cada elemento selecionado na parte
central da tela, que representa o smartphone, abrirá a guia de atributos (Attributes)
do lado direito da IDE, onde é possível alterar características do elemento, como tipo
de fonte, cor, alinhamento, id, entre outros.
• Button – Botões.
35
parecem estar no local correto, mas isso é apenas aparência. Sem a ancoragem,
todos eles serão levados para o ponto inicial da tela, no topo, à esquerda.
Se observar a figura 13, existe uma “mola” com uma seta na ponta nos
quatro cantos do TextView selecionado, estes são os pontos de ancoragem, e eles
são criados ao arrastar o círculo que aparece na borda até a borda de outro
elemento. A figura 14 apresenta outras formas de ancoragem.
Fonte: https://developer.android.com/training/constraint-layout.
36
lado direito. O número 16 representa 16 DP, que é a margem padrão recomendada
na documentação.
37
Este recurso permitirá que o EditText ocupe todo o espaço que sobrar do Button,
como representado na figura 16.
38
Abra o arquivo de layout recém-criado e insira um TextView, ancorado ao
topo, início e fim do “parent”, aproveite para alterar o ID deste elemento, conforme
ilustrado na figura 18. O id é importante, pois será utilizado para identificar
unicamente o elemento, tanto na Activity, quanto na View.
39
necessários para o trabalho dela. Neste caso, uma view. Na linha 19 é criada uma
variável imutável chamada editText, que contém o objeto correspondente ao
elemento utilizado para os usuários inserirem uma mensagem. O comando
findViewById é faz esta associação, entre parênteses está o identificador do
elemento. Este é o ID fornecido pelo desenvolvedor quando está construindo a
interface gráfica.
40
Assim, o texto deste widget será o conteúdo da variável mensagem.
Figura 20 – ExibirMensagemActivity.
41
7
Capítulo 7. O Android
O Android é o sistema operacional mais utilizado no mundo! Ele foi
desenvolvido para operar em Smartphones e hoje possui versões para TV,
Smartwatches e mais. Ele é um projeto de código fonte aberto, liderado pelo Google.
Apesar de open-source, o código só é liberado para a comunidade depois que o
Google faz todo o desenvolvimento. Neste momento, as empresas interessadas
podem customizar o sistema para seus dispositivos.
A pilha do Android é exibida na figura 21. Falaremos mais sobre ela logo
adiante. Neste ponto, devemos ressaltar o elemento responsável pela instalação e
execução das aplicações no telefone, o ART, ou Android Runtime. Esta é a versão
mais recente da máquina virtual responsável pela instalação e execução dos apps no
aparelho. Antes dela, o Dalvik era utilizado. Ambos foram criados exclusivamente
para a execução de apps no Android. O ART apresenta algumas vantagens, como a
compilação ahead of time, que compila a aplicação no momento da instalação,
otimizando o desempenho. Para quem utiliza o Android desde as versões iniciais, é
possível notar que o processo de instalação está um pouco mais demorado, contudo,
a inicialização das aplicações está bem rápida. Para saber mais, consulte
(GeeksForGeeks 2021).
Fonte: developers.android.com.
43
Para falar das demais camadas, será utilizada a figura 22, onde:
44
Figura 22 – Android.
Fonte: developers.android.com
Talvez este seja um dos pontos mais enigmáticos para quem está iniciando
no desenvolvimento de aplicações para Android. Aqui, o sistema operacional tem
muito poder sobre nossas aplicações e precisamos tomar medidas preventivas
quando certas mudanças acontecerem. Você já parou para pensar no que acontece
45
quando o telefone toca quando você está usando outro APP, como o Whatsapp? Ou
quando você troca de um APP para outro? Pressiona o botão hoje? Para entender o
que acontece, precisamos conhecer o ciclo de vida da aplicação.
46
• onStop() - Neste estado a activity não está mais visível para o usuário. Isso
acontece quando outra activity está usando toda a tela. Podemos executar
aqui operações mais pesadas, como realizar o envio de dados para uma api,
por exemplo.
47
• Log.v – Utilizado para exibir todos os tipos de mensagens.
48
8
Capítulo 8. Kotlin vs. Java
Se fizer uma pesquisa rápida na internet, você perceberá que o Java está
sempre na lista das linguagens de programação mais utilizadas no mundo, em várias
delas entre os cinco primeiros colocados. Cass, 2021, apresenta uma pesquisa
bastante relevante sobre o tema.
50
Ela é uma linguagem de programação multiplataforma, orientada a objetos e
funcional, concisa, e estaticamente tipada, e compila o código para ser executado na
JVM, por isso, alguns pesquisadores apontam que o Kotlin é uma extensão do Java.
Foi desenvolvida pela JetBrains em 2011 e pode ser utilizada para desenvolvimento
de softwares estatísticos, para desktop, Android nativo, multiplataforma e web
(Kotlin Foundation).
• Android Studio e Kotlin pertencem à IntelliJ - ao copiar uma classe java para
uma classe Kotlin, a IDE realiza a conversão.
51
9
Capítulo 9. Principais Bibliotecas
O Android e seu framework evoluíram bastante nos últimos anos, como
devem ter notado ao longo do material. Com isso, muitas bibliotecas foram criadas,
gerando certa confusão para os desenvolvedores. A fim de padronizar a situação e
mitigar o problema, uma equipe de engenheiros do Google lançou o Android JetPack,
ou andoidx.
Activity
Isso quer dizer que a jornada do usuário sempre é iniciada de maneira não
determinística. Por exemplo, você pode abrir o aplicativo de e-mail utilizando o ícone
da aplicação e ir direto para a listagem da caixa de entrada, ou ele pode ser aberto ao
53
compartilhar o conteúdo de outro app por e-mail, onde você será direcionado para a
tela de edição.
Fragments
Vocês já foram apresentados à Activity e viram que ela é usada para definir,
exibir e controlar a interação com a interface do usuário, sendo uma responsável por
cada tela. Contudo, podemos criar um aplicativo com várias telas e uma única
activity. Isso é possível com o uso de fragments.
AppCompat
A biblioteca AppCompat vem para auxiliar neste processo. Ela oferece uma
API para nossas activities e fragments que permite trabalhar com versões mais
recentes e mais antigas do Android. Quando o aplicativo for executado em uma
versão antiga, o APPCompat tenta preencher as funcionalidades faltantes da UI
sempre que possível. A desvantagem é que o uso dela torna o aplicativo maior, e
54
eleva um pouco a complexidade do desenvolvimento, contudo, será possível
executar sua aplicação sem problemas em versões mais antigas do sistema
operacional.
Navigation
Um aplicativo pode ter uma única tela com informações ou, como acontece
na maior parte dos casos, possuir diversas telas. Durante a interação, o usuário pode
clicar em um widget, como um botão, e ser direcionado para outra activity. Ao
pressionar o outro botão, ele será redirecionado à janela anterior.
55
fora do fluxo principal de execução da aplicação, para mantê-la responsiva (Google
Developers, n.d.)!
O Live Data, gerenciado pelo ViewModel, veio para facilitar. Ele simplifica o
processo de monitoramento de dados alterados em segundo plano, notificando a
interface gráfica sempre que os dados estiverem disponíveis ou forem alterados.
Room
O sqlite está disponível por intermédio uma biblioteca que também faz parte
do Jetpack. Apesar de ser uma API muito poderosa, ela possui um nível mais baixo,
ou seja, é mais complexo de ser utilizado, consumindo tempo e esforço de
desenvolvimento. Para facilitar a manipulação da base de dados, é extremamente
recomendado utilizar o Room persistence Library, uma camada de abstração para
acessar informação na base de dados sqlite da aplicação. Ele traz uma série de
benefícios, como estratégias de migração em caso de modificações na estrutura do
banco.
Worker Manager
56
Isso acontece, por exemplo, ao executar um tocador de música, ou quando o
aplicativo precisa realizar alguma tarefa de tempos em tempos. Várias soluções para
este problema foram disponibilizadas ao longo dos anos e com o Jetpack surgiu mais
uma, que atualmente é recomendada pelo Google, o WorkManager.
Android KTX
Testing
57
suas especificações e usabilidade, antes de ser disponibilizado aos utilizadores. Os
testes fornecem as seguintes vantagens:
Compose
58
Koin
Imagine uma classe, que internamente precisa gerar uma instância da classe
Y. Temos aqui uma dependência entre elas. Toda vez que o construtor de Y for
alterado, precisaremos alterar a criação do objeto na classe X que a utiliza. Com a
injeção de dependência, nós retiramos da classe X a responsabilidade de criar uma
instância de Y e passamos para quem vai consumi-la ou a alguma biblioteca que faça
isso por nós, e é aí que o Koin entra.
Retrofit
59
do retrofit, mas o esforço é compensado pela estabilidade e frequente atualização da
biblioteca.
Gson
60
Figura 23: Build gradle.
61
Figura 24: Build gradle – módulo.
Outra possibilidade é editar este arquivo com o assistente. Para isso, utilize a
opção Open, que está no topo da janela do arquivo de configurações, ou vá em
File/Project Structure. Uma tela similar à apresentada na figura 25 será exibida. Abra
a guia Dependencies (dependências), ela mostra todas as dependências já instaladas
em seu projeto. Para incluir novas, clique no símbolo de mais, que está abaixo de All
Dependencies. Escolha Library Dependency.
62
Na tela seguinte, digite o nome da biblioteca desejada, como
androidx.recyclerView; em seguida, inicie a busca. No resultado, as bibliotecas
estarão organizadas por GroupID, Artifact Name, Repository e no final é possível
escolher a versão. Em APPs de produção é sempre interessante utilizar a versão
estável do pacote. Em seguida, basta clicar em OK, OK novamente e aguardar o
processo de importação.
63
10
Capítulo 10. Arquitetura de Aplicações Android
Como todos os tipos de software, aplicativos Android também devem seguir
regras arquiteturais e padrões de projeto. As aplicações que não possuem uma
arquitetura bem definida podem até funcionar, mas, conforme crescem, tendem a se
tornar difíceis de serem mantidas, devido ao emaranhado de activities, fragments e
outras classes inconsistentes com padrões de design e comportamento.
Princípios de projeto
Princípios de projeto podem então ser vistos como diretrizes que garantem
que o projeto se mantenha aderente a determinadas propriedades, como integridade
conceitual – capacidade de manter a uniformidade do comportamento da aplicação
ou seja, o modo de operação similar em todos os módulos; ocultação de informação
– exibir apenas decisões de projeto que não são alteradas com frequência; coesão –
toda classe deve implementar uma única funcionalidade ou serviço; acoplamento –
força de ligação entre duas classes e expansibilidade – capacidade de fazer o sistema
crescer.
65
• Single responsibility Principle (responsabilidade única) – A classe deve ter
uma única responsabilidade. Ou seja, ela não deve ser responsável por exibir
a interface gráfica e persistir informações no banco de dados.
Padrões de projeto
66
futuro se mudanças não forem levadas em consideração durante a elaboração”
(Gamma et al. 2006). O livro propõe três regras para entendimento dos padrões de
projeto:
67
configuração do dispositivo. Além disso, o mesmo modelo pode ser utilizado por
diversas activities em instantes diferentes e todos devem reagir às mudanças nos
dados.
Arquitetura de software
68
A arquitetura em camada, utilizada, por exemplo, na pilha do protocolo
tcp/ip, é um destes modelos. Existem outros, como Arquitetura MVC, muito utilizada
em aplicações WEB, Micro Serviços, utilizados em APIs, publish and subscribe,
orientada a mensagens etc. Apesar de ser possível utilizar algumas destas
arquiteturas para aplicações Android, o Google apresenta sugestões que melhor se
adequam a este cenário.
69
A equipe de desenvolvimento do Android define arquitetura de software
como as barreiras entre partes de um APP e as responsabilidades que cada parte
deve ter. Isso mantém o princípio da separação de responsabilidades, que traz
diversos benefícios, como já mencionamos (Google Developers). Um exemplo do que
não é separação de responsabilidade é implementar a lógica da aplicação nas
activities ou fragments.
70
• Abstração das fontes de dados do restante da aplicação.
Cada classe de dados será responsável por uma e apenas uma fonte de
dados, como recursos online, ou um banco de dados local. Ou seja, ela será uma
ponte entre a aplicação e o sistema para operações de dados.
71
11
72
Capítulo 11. Avançando na Prática
No último vídeo, foi desenvolvido um aplicativo capaz de registrar frases,
que foram armazenadas em uma lista na memória RAM do dispositivo, ela será
utilizada para simular a persistência de dados utilizando um repositório. Além disso,
você também utilizará o viewBinding, Observer e Livedata.
73
Figura 27 – Ativando o viewBinding.
Neste projeto, também foi utilizado o Recycler View para exibir a lista de
frases salvas. Este componente é responsável por criar uma lista de itens e reutilizar
cada componente, otimizando assim o seu funcionamento. Para utilizá-lo, é
necessário criar um widget de mesmo nome no arquivo de layout e, junto,
determinar se a lista será exibida em linha, em formato de grade ou em grade
otimizado, onde o número de linhas e colunas não precisam ser os mesmos.
74
O ViewModel foi utilizado para manter os dados da aplicação, mesmo em
caso de mudanças no ciclo de vida. Nele, criamos um objeto LiveData, classe capaz de
armazenar dados observáveis. Além de reconhecer o ciclo de vida da aplicação, ela
também permite que a interface gráfica seja atualizada utilizando observadores, do
padrão Observer, discutido anteriormente.
75
Referências
ALURA. 2021. “Kotlin vs Java - Qual escolher | Android.” Alura. Disponível em:
<https://cursos.alura.com.br/forum/topico-kotlin-vs-java-qual-escolher-170448>.
Acesso em: 26 abr. 2022.
FIGUEIREDO, Carlos M., and NAKAMURA, Eduardo. 2003. “Computação móvel: Novas
oportunidades e novos desafios.” T & C Amazônia 1:21.
GAMMA, Erich. HELM, Richard. JOHNSON, Halp. VLISSIDES, John. 2006. Padrões de
Projetos: Soluções Reutilizáveis. N.p.: Bookman.
JUNIOR, Eler, and Ildeir De Oliveira. 2019. Sistema de computação móvel para
gerenciamento de informações relacionadas a objetos do espaço físico. N.p.: UFOP.
76
Kotlin Foundation. n.d. “Kotlin Programming Language.” Kotlin Programming
Language. Disponível em: <https://kotlinlang.org/>. Acesso em: 26 abr. 2022.
MATEUS, Geraldo R., and Antônio A. Loureiro. 1998. Introdução à computação móvel.
11a ed. Rio de Janeiro: Escola de computação.
MEDEIROS, Henrique. 2021. “Mobile responde por 76% das vendas do Magazine
Luiza.” Mobile Time. Disponível em:
<https://www.mobiletime.com.br/noticias/09/03/2021/mobile-responde-por-76-
das-vendas-do-magazine-luiza/>. Acesso em: 26 abr. 2022.
Mobile Time. n.d. “O brasileiro e seu smartphone - julho de 2021 - Panorama Mobile
Time/Opinion Box.” Mobile Time. Disponível em:
<https://www.mobiletime.com.br/pesquisas/o-brasileiro-e-seu-smartphone-julho-
de-2021/>. Acesso em: Acesso em: 26 abr. 2022.
PAIXÃO, João Roberto d. 2019. “O que é SOLID: O guia completo para você entender
os 5 princípios da POO.” Medium. Disponível em:
<https://medium.com/desenvolvendo-com-paixao/o-que-%C3%A9-solid-o-guia-
completo-para-voc%C3%AA-entender-os-5-princ%C3%ADpios-da-poo-
2b937b3fc530>. Acesso em: 26 abr. 2022.
77
Platform Hunt. 2016. “The 9 Types of Software Platforms | by Platform Hunt |
Platform Hunt.” Medium. Disponível em: <https://medium.com/platform-hunt/the-
8-types-of-software-platforms-473c74f4536a>. Acesso em: 26 abr. 2022.
SQLite Consortium. n.d. “SQLite Home Page.” SQLite Home Page. Disponível em:
<https://www.sqlite.org/index.html>. Acesso em: 26 abr. 2022.
Statcounter. n.d. “Global stats.” Statcounter Global Stats - Browser, OS, Search
Engine including Mobile Usage Share. Disponível em: <https://gs.statcounter.com/>.
Acesso em: 26 abr. 2022.
Terminal Root. 2019. “Java VS Kotlin: Quais são as principais diferenças entre elas?”
Terminal Root. Disponível em: <https://terminalroot.com.br/2019/10/java-vs-kotlin-
quais-sao-as-principais-diferencas-entre-elas.html>. Acesso em: 26 abr. 2022.
Tiger Mobiles. n.d. “Evolution of the Mobile Phone - History and Timeline -
TigerMobiles.com.” Tiger Mobiles. Disponível em:
<https://www.tigermobiles.com/evolution/#start>. Acesso em: 26 abr. 2022.
Use mobile. n.d. “Aplicativo nativo, híbrido e webapp: o que são e qual o melhor?”
Usemobile. Disponível em: <https://usemobile.com.br/aplicativo-nativo-web-
hibrido/>. Acesso em: 26 abr. 2022.
78