Prévia do material em texto
Aula 07
Desenvolvimento de Sistemas p/ Polícia
Federal (Perito - Área 3 - Tecnologia da
Informação) - 2020
Autores:
Diego Carvalho, Pedro Henrique
Chagas Freitas
Aula 07
22 de Abril de 2020
Curso Regular de Desenvolvimento de Software
www.estrategiaconcursos.com.br
1
59
Sumário
Desenvolvimento Mobile ............................................................................................................. 2
Desenvolvimento Nativo .............................................................................................................. 6
Desenvolvimento Cross-Plataform ............................................................................................ 10
Exercícios ................................................................................................................................... 16
Android ...................................................................................................................................... 20
Questões Android ...................................................................................................................... 32
IOS ............................................................................................................................................. 42
Questões IOS ............................................................................................................................. 45
Lista de Exercícios ...................................................................................................................... 51
Gabarito ..................................................................................................................................... 59
Diego Carvalho, Pedro Henrique Chagas Freitas
Aula 07
Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
Curso Regular de Desenvolvimento de Software
www.estrategiaconcursos.com.br
2
59
DESENVOLVIMENTO MOBILE
Pessoal, vamos falar sobre sistemas, arquitetura e aplicações de dispositivos móveis. A
popularização dos smartphones desencadeou uma revolução no mercado de telefonia móvel. A
evolução da tecnologia dos aparelhos celulares permitiu oferecer ao usuário recursos que vão
muito além da realização de uma chamada ou do envio de uma mensagem.
As melhorias de hardware permitiram o desenvolvimento de sistemas operacionais mais
avançados. A partir disso, foi possível desenvolver aplicativos melhores com cada vez mais
recursos e serviços para os usuários. Os acessos, por exemplo, a serviços de instituições
financeiras e redes sociais podem ser facilitados pelo uso de aplicativos que são executados em
um aparelho celular.
Diego Carvalho, Pedro Henrique Chagas Freitas
Aula 07
Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
Curso Regular de Desenvolvimento de Software
www.estrategiaconcursos.com.br
3
59
Devido a esta evolução, os smartphones se transformaram em uma oportunidade de
entretenimento, de acesso à informação e de solução de problemas, integrando-se assim ao
cotidiano das pessoas e facilitando diversas tarefas do dia a dia. Motivado por estes resultados,
o mercado de aplicativos para aparelhos celulares apresenta anualmente uma absurda taxa
de crescimento.
Este mercado é disputado por diferentes plataformas tecnológicas, incluindo sistemas
operacionais e plataformas de desenvolvimento, gerando uma variedade enorme de soluções
no mercado. Frente a este fato, um dos principais desafios deste mercado é desenvolver
aplicativos em um ambiente de tecnologia altamente fragmentado e em rápida evolução.
As limitações de plataforma para distribuição do aplicativo, tempo e custo para o
desenvolvimento, complexidade das tecnologias necessárias para a sua criação e manutenção
são pontos problemáticos em um projeto voltado ao desenvolvimento deste tipo de aplicativo.
Por que? De novo, lembrem-se da variedade colossal de dispositivos que existem atualmente.
Essas plataformas são compostas de diversas tecnologias, tais como: sistema operacional,
linguagens de programação e IDEs. O Sistema Operacional é responsável por gerenciar diversos
recursos do aparelho; as linguagens de programação são utilizadas na programação do aplicativo;
e a IDE fornece ferramentas que auxiliam na criação do aplicativo.
Diego Carvalho, Pedro Henrique Chagas Freitas
Aula 07
Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
Curso Regular de Desenvolvimento de Software
www.estrategiaconcursos.com.br
4
59
Além disso, no desenvolvimento de um aplicativo móvel, deve-se considerar, por exemplo:
resoluções dos dispositivos; as limitações de bateria, processamento, memória e
armazenamento; versão do sistema operacional utilizado; os diversos tamanhos de tela; as
possíveis questões de segurança de dados; acessibilidade; entre outros. Vocês percebem agora
como tudo isso pode ser complexo?
Diego Carvalho, Pedro Henrique Chagas Freitas
Aula 07
Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
Curso Regular de Desenvolvimento de Software
www.estrategiaconcursos.com.br
5
59
Galera, eu tenho alguns amigos de faculdade que enveredaram para a área de jogos para
dispositivos móveis. Pensem em termos de marketing e dinheiro! É bom comercialmente que um
jogo funcione apenas no Galaxy S5, mas não no Galaxy S5 Mini? É bom comercialmente que um jogo
não torre a bateria no iPhone X, mas torre no iPhone XR? Evidente que não!
Dito isso, vamos falar agora sobre as principais abordagens de desenvolvimento para sistemas
móveis. Peço a atenção de vocês, porque esse assunto é o que mais cai em prova! Conforme a
imagem acima, existem duas abordagens principais: Desenvolvimento Nativo e
Desenvolvimento Cross-Platform (sendo que esse último se divide em Desenvolvimento Web
e Desenvolvimento Híbrido).
Diego Carvalho, Pedro Henrique Chagas Freitas
Aula 07
Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
Curso Regular de Desenvolvimento de Software
www.estrategiaconcursos.com.br
6
59
DESENVOLVIMENTO NATIVO
O Desenvolvimento Nativo é quando o aplicativo é desenvolvido usando os recursos da
plataforma. No caso do iOS, utiliza-se a linguagem de programação Objective-C, o framework
de desenvolvimento CocoaTouch e a ferramenta Xcode. Para Android, utiliza-se a linguagem Java
com o Android Studio na ferramenta Eclipse. E, no Windows Phone, a linguagem C#, Windows
Phone SDK e Visual Studio.
Diego Carvalho, Pedro Henrique Chagas Freitas
Aula 07
Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
Curso Regular de Desenvolvimento de Software
www.estrategiaconcursos.com.br
7
59
Trata-se, portanto, da abordagem mais simples e direta: para cada plataforma, é desenvolvida
uma versão do aplicativo. Optar por desenvolvimento nativo é mais caro, pois é necessário
desenvolver um novo código para cada plataforma. No entanto, o resultado final geralmente é
melhor, pois o aplicativo funcionará mais fluído e melhor integrado com os recursos de cada
plataforma. Exemplo acima!
Por falar nisso, através das APIs disponíveis das linguagens utilizadas em cada plataforma, um
aplicativo nativo pode acessar funcionalidades oferecidas por recursos nativos do sistema
operacional, tais como: GPS, SMS, E-Mail, Acelerômetro, Bússola, Câmera Fotográfica, etc.
Esses aplicativos nativosevidentemente podem ser baixados, instalados e vendidos em lojas de
aplicativos.
O desenvolvimento de um aplicativo nativo exige conhecimentos específicos a respeito das
tecnologias utilizadas pela plataforma na qual se deseja executá-lo. A principal desvantagem
está justamente no fato de ser executado apenas na plataforma para a qual foi desenvolvido,
aumentando o tempo, custo e o esforço para disponibilizar um mesmo aplicativo para mais
de uma plataforma.
As diferenças entre as plataformas também são importantes, pois para cada uma há diferentes
ferramentas de desenvolvimento, bibliotecas e equipamentos com diferentes capacidades.
Desenvolver aplicativos nativos para diversos sistemas operacionais requer uma equipe de
trabalho com conhecimento em várias tecnologias, visto que não há reaproveitamento de
código. Vejam alguns exemplos:
PLATAFORMA
CONHECIMENTOS NECESSÁRIOS
Apple IOS C, Object C
Google Android Java
RIM Blackberry Java (J2ME Flavored)
Symbian C, C++, Python, HTML, CSS, JS
Windows Mobile .Net
Windows 7 Phone .Net
HP Palm webOS HTML, CSS, JS
MeeGo C, C++, HTML, CSS, JS
Samsung bada C++
Diego Carvalho, Pedro Henrique Chagas Freitas
Aula 07
Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
Curso Regular de Desenvolvimento de Software
www.estrategiaconcursos.com.br
8
59
Para você entender um pouco melhor sobre as diferenças, preparamos um quadro comparativo
com as vantagens e desvantagens de cada um dos modelos de aplicação para
mobile. Atenção: as comparações trazem uma visão geral do assunto, mas tudo depende da
forma como o profissional desenvolverá o app e de qual o objetivo dele.
Aplicativos nativos são desenvolvidos de acordo com as especificações fornecidas pelo
fabricante do sistema operacional. Esses fabricantes fornecem APIs que podem ser utilizadas
pelos desenvolvedores, garantindo certo nível de consistência entre todos os aplicativos nativos.
Em geral, oferecem ótima experiência de uso, permitindo ao usuário uma navegação mais
imersiva.
Com relação a sua interface, os componentes de um aplicativo nativo são iguais aos do sistema
operacional utilizado pelo sistema operacional do dispositivo, portanto é mais intuitivo ao
Diego Carvalho, Pedro Henrique Chagas Freitas
Aula 07
Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
Curso Regular de Desenvolvimento de Software
www.estrategiaconcursos.com.br
9
59
usuário. Aplicativos desenvolvidos através do paradigma nativo possuem ótimo
desempenho. Por que, professor? Porque não é necessária qualquer interpretação de código
durante a execução.
Outro aspecto importante é a independência de comunidades responsáveis por versões de
frameworks de desenvolvimento de aplicativos, pois – em um aplicativo nativo – as atualizações
de API do próprio sistema operacional serão utilizadas no desenvolvimento de novas
funcionalidades do aplicativo nativo. O que você quer dizer com isso, professor?
Eu quero dizer que, uma vez atualizada a plataforma, já é possível incorporar as novidades
existentes da plataforma para desenvolver para o aplicativo nativo, sem a dependência da
atualização de tecnologias adjacentes, como por exemplo, algum framework particular. Bacana!
Agora vamos falar um pouquinho sobre o Desenvolvimento Cross-Platform.
Vamos resumir nosso papo! Se você for criar uma aplicação nativa para Android, você poderá
executá-lo no iOs? Não, e vice-versa! Você terá que criar uma aplicação para cada plataforma e
provavelmente necessitará de duas equipes (cada uma especializada em uma linguagem). Você
terá acesso aos recursos do dispositivo e poderá instalar em uma loja de aplicativos –
obviamente, com mais segurança.
Diego Carvalho, Pedro Henrique Chagas Freitas
Aula 07
Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
Curso Regular de Desenvolvimento de Software
www.estrategiaconcursos.com.br
10
59
DESENVOLVIMENTO CROSS-PLATAFORM
Considerando um cenário com notável diferença entre sistemas operacionais e plataformas de
programação existentes, desenvolver um aplicativo uma vez e poder utilizá-lo em várias
plataformas é um dos maiores desafios da computação móvel. Dito isso, temos o
Desenvolvimento Cross-Platform, que é uma forma de desenvolver aplicativos que poderão ser
utilizados em diferentes plataformas.
Com o crescimento dos aplicativos cross-plataform, o mercado de aplicativos para aparelhos
celulares sofreu alterações importantes em seu modelo de negócio. Entre as vantagens,
destaca-se um maior Retorno sobre Investimento (ROI), pois uma vez que o aplicativo é
multiplataforma e pode ser empacotado como um aplicativo nativo, é desenvolvido uma vez e
comercializado em várias lojas de aplicativos.
Infelizmente, a experiência de usuário do aplicativo não terá a mesma fluidez; realizar testes em
aplicativos cross-platform é bem mais complexo; não há garantia de poder aproveitar os
recursos do dispositivo tão eficientemente como no desenvolvimento nativo; pode haver
dificuldades, na medida em que plataformas possuem diferentes comportamentos e defeitos –
dificultando a depuração. Enfim...
Como vimos anteriormente, ele se divide em Desenvolvimento Web (também conhecido
como Desenvolvimento Responsivo) e Desenvolvimento Híbrido. Professor, qual a diferença
entre essas abordagens? Bem, as aplicações web são acessadas diretamente do navegador e são
geralmente desenvolvidas em HTML5, CSS3 e JavaScript.
O HTML5 incorporou uma série de elementos multimídia ao HTML comum, o que fez com que
ele rapidamente se tornasse uma excelente opção de desenvolvimento. A grande vantagem é que
ele pode ser lido em qualquer navegador (móvel ou não). No entanto, ele tem alguns problemas
de performance – ademais, faltam à linguagem alguns recursos mais avançados.
Além disso, essas aplicações precisam estar conectadas à internet para funcionar. Como nem
todos os usuários de smartphone possuem conexão à internet, e algumas vezes essas conexões
não são de boa qualidade, pode não ser uma boa ideia confiar apenas nessas tecnologias. Deve-
se avaliar o contexto de utilização e nos objetivos do aplicativo.
Diego Carvalho, Pedro Henrique Chagas Freitas
Aula 07
Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
Curso Regular de Desenvolvimento de Software
www.estrategiaconcursos.com.br
11
59
Em suma, Desenvolvimento Web trata de aplicativos que rodam diretamente no navegador
do dispositivo. A Interface Gráfica é adaptada para dispositivos com telas menores, utilizando
conceitos de responsividade. Estas aplicações são hospedadas em servidores web, utilizando
tecnologias específicas para serem carregadas, em geral, em máquinas de “baixo” processamento
e velocidade de banda da rede.
A atualização/manutenção da aplicação é feita no servidor! Logo, todos os dispositivos recebem
a nova versão automaticamente, bastando atualizar a página no browser – tudo independente de
plataforma. Há alguns problemas com a persistência de dados no dispositivo (Local Store). No
entanto, há mecanismos para manter informações em cache, simulando o armazenamento de
dados.
E o Desenvolvimento Híbrido? Aplicações híbridas trazem a resposta para os programadores que
desejam desenvolver para muitas plataformas, sem grande perda de desempenho. Essa
abordagem permite ao desenvolvedor criar um núcleo do programa de forma nativa, o que
permite que haja um controle sobre as funcionalidades e recursos do dispositivo.
Isso faz com que, em suma, a experiência dousuário que está utilizando a aplicação em um iOS
seja a mesma que um em um Windows Phone, por exemplo, o que é muito importante em grande
parte das aplicações. O aplicativo híbrido funciona dentro do browser do sistema operacional. O
browser implementa uma classe que é capaz de exibir conteúdo web.
Diferente do aplicativo nativo, o híbrido não possui acesso direto às funcionalidades do
dispositivo, sendo necessário um framework que faça a comunicação entre o aplicativo e o
dispositivo. Em geral, o desenvolvimento híbrido é utilizado para aplicativos menos robustos e
mais simples. Nesse contexto, o desenvolvedor consegue reaproveitar boa parte do seu
código.
A aplicação híbrida nada mais é que uma aplicação web (HTML5, CSS3, etc) envelopada em um
contêiner nativo. Existem dezenas de ferramentas para gerar esse contêiner nativo para cada
plataforma, tais como Cordova, Sencha Touch, etc. Para diferenciar todas essas abordagens,
eu recomendo que façamos uma comparação geral. Atenção no quadro abaixo:
Diego Carvalho, Pedro Henrique Chagas Freitas
Aula 07
Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
Curso Regular de Desenvolvimento de Software
www.estrategiaconcursos.com.br
12
59
Nativo
Web
Híbrido
Distribuição
Baixado a partir da
Loja de Aplicativos.
Hospedado em um
Servidor Web na
internet e acessado
por meio de um
navegador.
Baixado a partir da
Loja de Aplicativos.
Acesso
Offline
Pode acessar telas
sem conexão com a
internet.
Pode acessar algumas
telas sem conexão
com a internet (via
cache).
Pode acessar telas
sem conexão com a
internet.
Desenvolvimento
Cada aplicativo para
uma plataforma
específica. A lógica
da aplicação é
reconstruída para
cada aplicação em
cada plataforma. É
difícil replicar
aplicativos
precisamente em
todas as
plataformas.
Um aplicativo é
desenvolvido para
funcionar em todas as
plataformas, porque a
lógica pode ser
reutilizada.
Aplicativos parecem
idênticos em todos os
dispositivos e
browsers, mas requer
muitos testes.
Um aplicativo é
construído e depois
envolvido em um
contêiner para servir
a uma plataforma
nativa específica.
Releases
Atualizações devem
ser baixadas e
instaladas todas as
vezes.
Desenvolvimento e
ciclos de release são
maiores.
Atualizações podem
ser manipuladas
remotamente e são
instantâneas.
Atualizações podem
ser baixadas e
instaladas todas as
vezes.
Desempenho
Resposta rápida. Um pouco de atraso,
especialmente com
conectividade pobre.
Mais rápido que o
Web e mais lenta que
o Nativo.
Design
Interface de usuário
bastante rica.
Interface de usuário
com foco maior
ênfase na
funcionalidade.
Apelo visual maior
que o
Desenvolvimento
Diego Carvalho, Pedro Henrique Chagas Freitas
Aula 07
Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
Curso Regular de Desenvolvimento de Software
www.estrategiaconcursos.com.br
13
59
Web, mas não tão
rico como o Nativo.
Integração
Suporta integração
com recursos do
dispositivo.
Suporta parcialmente
a integração com
recursos do
dispositivo.
Suporta integração
com recursos do
dispositivo, mas com
desempenho
limitado.
Armazenamento
de Dados
SQLite. SQLite. SQLite.
Touch
Swipe, Pinch e
Spread.
Swipe Swipe, Pinch e
Spread.
Custo
Mais caro de todos. Mais barato de todos. Barato, mas não
tanto quanto o
Desenvolvimento
Web.
Ênfase
Ênfase na
interatividade e nos
recursos.
Ênfase na usabilidade. Ênfase na
usabilidade.
Tempo de
Desenvolvimento
Lento. Rápido. Médio.
Manutenção
Complexa. Fácil. Moderada.
A imagem abaixo também auxilia a entender cada abordagem! Percebam que se você deseja
capacidade máxima em uma plataforma única com interações avançadas, alta performance e
distribuição segura em uma loja de aplicativos, vá de Desenvolvimento Nativo! Se você deseja
capacidade máxima, mas para múltiplas plataformas e exigindo habilidades do desenvolvedor.
Diego Carvalho, Pedro Henrique Chagas Freitas
Aula 07
Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
Curso Regular de Desenvolvimento de Software
www.estrategiaconcursos.com.br
14
59
Além disso, se você quiser também acesso a plataforma nativa e distribuição segura em uma
loja de aplicativos, vá de Desenvolvimento Híbrido. Por fim, se a alta capacidade não é seu foco,
mas a capacidade de rodar em diversas plataformas, também exigindo habilidades do
desenvolver, atualizações instantâneas e automáticas e distribuição irrestrita, seu negócio é
Desenvolvimento Web (HTML5).
Por fim, vamos falar rapidamente sobre Mobile Device Management (MDM). O que é isso,
professor? Galera, com a proliferação de dispositivos móveis no local de trabalho, os
funcionários podem e devem trabalhar de qualquer lugar. Para ser produtiva, essa força de
trabalho móvel exige acesso consistente a recursos e dados da empresa de qualquer lugar em
qualquer dispositivo.
Essa tendência trouxe diversos desafios significativos de segurança para administradores de TI
que desejam habilitar a mobilidade empresarial e garantir que os recursos da empresa estejam
protegidos de acesso não autorizado. O Gerenciamento de Dispositivos Móveis é um termo
Diego Carvalho, Pedro Henrique Chagas Freitas
Aula 07
Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
Curso Regular de Desenvolvimento de Software
www.estrategiaconcursos.com.br
15
59
utilizado para abranger a administração de dispositivos como smartphones, tablets, laptops,
etc.
Entre as vantagens da implantação do gerenciamento de dispositivos móveis, podemos citar
o aumento da segurança e conformidade; redução dos custos de suporte de ativos móveis;
aprimoramento do gerenciamento de aplicativos e de desempenho; a garantia de continuidade
melhor dos negócios; aumento da produtividade e satisfação do usuário; entre outros.
O uso de ferramentas de gestão é fundamental para garantir segurança e eficiência da gestão
dos dispositivos. Atualmente existem muitas ferramentas de MDM no mercado como Airwatch,
Mobile Iron, BlackBerry, Afaria, Knox e Good Technology, entre outras. Essas ferramentas
conseguem realizar, de forma remota, diversos comandos. Quais, professor?
Aplicar restrições, realizar a limpeza remota seletiva do conteúdo corporativo ou também do
pessoal (no caso de BYOD1), bloqueio do dispositivo, controle de funcionalidades e acessos
baseados em perfil de usuário, horário e até mesmo geo-localização. Algumas atendem
necessidades específicas: como antivírus, segurança, virtualização, entre outras.
1 Bring Your Own Device (Traga seu próprio dispositivo).
Diego Carvalho, Pedro Henrique Chagas Freitas
Aula 07
Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
Curso Regular de Desenvolvimento de Software
www.estrategiaconcursos.com.br
16
59
EXERCÍCIOS
1. (CESPE – 2014 – ANATEL – Analista de Sistemas) O desenvolvimento de aplicações web e o
de aplicações nativas são as principais formas de desenvolvimento móvel.
Comentários:
Vamos falar agora sobre as principais abordagens de desenvolvimento para sistemas móveis. Peço a
atenção de vocês, porque esse assunto é o que mais cai em prova! Conforme a imagem acima,
existem duas abordagens principais: Desenvolvimento Nativo e Desenvolvimento Cross-Platform
(sendo que esse último se divide em Desenvolvimento Web e DesenvolvimentoHíbrido).
Conforme vimos em aula, a questão está perfeita! De modo geral, são essas duas formas
principais – o tipo híbrido é uma combinação dos anteriores.
Gabarito: C
2. (CESPE – 2013 – BACEN – Analista de Sistemas) No projeto de aplicações para dispositivos
móveis, devem ser considerados, entre outros aspectos, as características dos dispositivos de
hardware para os quais a aplicação está sendo desenvolvida e o consumo de energia gerado
por cada recurso do sistema, visando-se a economia de bateria.
Comentários:
Além disso, no desenvolvimento de um aplicativo móvel, deve-se considerar, por exemplo:
resoluções dos dispositivos; as limitações de bateria, processamento, memória e armazenamento;
versão do sistema operacional utilizado; os diversos tamanhos de tela; as possíveis questões de
segurança de dados; acessibilidade; entre outros. Vocês percebem agora como tudo isso pode ser
complexo?
Diego Carvalho, Pedro Henrique Chagas Freitas
Aula 07
Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
Curso Regular de Desenvolvimento de Software
www.estrategiaconcursos.com.br
17
59
Conforme vimos em aula, a questão está perfeita! Deve haver uma preocupação com as
características de hardware do dispositivo.
Gabarito: C
3. (CESPE – 2017 – TRE/BA - Analista de Sistemas) Um APP que for desenvolvido de forma
híbrida, para funcionar no IOS e Android, além de agilizar e baratear o processo de
desenvolvimento, também:
a) será mais leve que o normal, pois possuirá menos código trafegando pela web.
b) será uma aplicação web convertida para rodar nas referidas plataformas.
c) será compilado de forma nativa no IOS e depois no Android.
d) acessará todas as bibliotecas nativas dos dispositivos.
e) será dependente das atualizações do sistema operacional.
Comentários:
Aplicações web híbridas, de fato, agilizam e barateiam o processo de desenvolvimento. Ademais,
uma aplicação híbrida nada mais é que uma aplicação web (HTML5, CSS3, etc) envelopada em
um contêiner nativo! Dito isso, vamos aos comentários: (a) Errado, possuem mais código
trafegando pela web, devido às camadas de encapsulamento que geram overhead; (b) Correto,
será uma aplicação web envelopada/encapsulada para rodar nas referidas plataformas; (c)
Errado, isso é desenvolvimento nativo; (d) Errado, ele não acessará bibliotecas nativas
diretamente, quem o fará será o container; (e) Errado, esse seria o caso de aplicações nativas.
Gabarito: B
4. (CESPE – 2017 – TRE/BA - Analista de Sistemas) Considerando que a experiência do usuário
vem evoluindo juntamente com as interfaces dos dispositivos móveis, assinale a opção
correta.
Diego Carvalho, Pedro Henrique Chagas Freitas
Aula 07
Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
Curso Regular de Desenvolvimento de Software
www.estrategiaconcursos.com.br
18
59
a) A utilização de carrosséis como método de interação deve ser evitada ou avaliada
cuidadosamente, devido ao alto percentual de desistência do usuário na navegação entre as
telas iniciais.
b) No caso de aplicações móveis que também existam em sítios, as telas na aplicação devem
ser semelhantes às do sítio para que seja aproveitada a experiência do usuário.
c) Devem-se utilizar asteriscos, ou representação com sentido equivalente, para esconder a
senha digitada, sem permitir que a senha seja visualizada por terceiros ou pelo próprio
usuário.
d) Para manter a confidencialidade dos dados, o usuário deve fazer login a cada acesso à
aplicação, fazendo uso, caso seja de seu interesse, de aplicações independentes para
armazenamento de senha.
e) Para o usuário, é aceitável que a tela de abertura (splash screen) demore a ser carregada,
desde que a aplicação seja carregada com a maioria das funcionalidades já disponíveis.
Comentários:
(a) Correto. Carrosséis são tão problemáticos em aplicativos quanto em sites, onde o nível de
desistência de 98% entre a primeira e a segunda tela não é raro (Fonte: Erik Runyon). Os carrosséis
podem ser pontos cegos onde as promoções são raramente acessadas. Isso dito, se o carrossel
for o método de interação adequado para o seu aplicativo, desenvolva-o com cuidado e alavanque
os padrões de design móvel que os usuários estão acostumados, apresentados pelos seus
sistemas de operação. Ex.: Nos sistemas Android e iOS um conjunto de pontinhos indica uma
série de imagens horizontais deslizáveis;
(b) Errado. Os usuários não devem ser apresentados a um aplicativo que é uma réplica do site da
marca ou que contém muito conteúdo e funcionalidades na tela padrão. Aplicativos devem ser
claros e as jornadas/tarefas devem ser óbvias, portanto, a marca deve priorizar o conteúdo e as
funcionalidades primárias e colocar todo o resto fora da tela, (Ex: acessível com um deslize do
menu, acima, do lado ou abaixo da tela);
(c) Errado. Dê aos usuários a opção de rapidamente selecionarem o controle que revela – ou
esconde – a senha quando estão digitando. Isso reduzirá o número de erros por preenchimento
de senha durante os processos de cadastro e log-in;
Diego Carvalho, Pedro Henrique Chagas Freitas
Aula 07
Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
Curso Regular de Desenvolvimento de Software
www.estrategiaconcursos.com.br
19
59
(d) Errado. Um dos grandes pontos de diferença entre aplicativos móveis e sites móveis é que os
aplicativos permitem que os usuários se mantenham logados por mais tempo (eliminando o
esforço de log-in manual e erros), recebendo os benefícios do nível de conveniência e
personalização, os quais são apenas possíveis por conta de um estado de log-in prolongado,
derivado de aplicativos que armazenam e atuam com base nas suas informações,
comportamentos e histórico de transações.
(e) Errado. A tela de abertura (ou Splash Screen) deve engajar os usuários e comunicar a essência
da marca, porém ela nunca deve deixar os usuários esperando. Sempre coloque o usuário em
controle e capaz de executar a sua tarefa o mais rápido possível.
Quem quiser ver mais dicas, acesse:
http://storage.googleapis.com/think/intl/ALL_br/docs/mobile-app-ux-principles_articles.pdf
Gabarito: A
ACERTEI ERREI
Diego Carvalho, Pedro Henrique Chagas Freitas
Aula 07
Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
Curso Regular de Desenvolvimento de Software
www.estrategiaconcursos.com.br
20
59
ANDROID
Android é um sistema operacional móvel pertencente ao Google! Apesar disso, ele continua
tendo código aberto, mas com aplicações com software de código fechado. Galera, quem aí
tem um celular com Android? Vocês devem saber que é possível trocar a ROM! Professor, o que é
ROM? É como um firmware personalizado do sistema operacional – pensem como uma
customização do sistema operacional.
Por exemplo: quando eu tinha um Moto X, que eu usava o CyanogenMod. Por que eu estou falando
isso? Para enfatizar que o Google é agora dono do Android, mas o código continua sendo
aberto – permitindo que muitos desenvolvedores criem personalizações. O Android surgiu a
partir da Versão 2.6 do Kernel do Linux e atualmente se baseia na Versão 3.x.
Diego Carvalho, Pedro Henrique Chagas Freitas
Aula 07
Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
Curso Regular de Desenvolvimento de Software
www.estrategiaconcursos.com.br
21
59
Professor, o que eu preciso para desenvolver? Você precisa do Android Studio, queé um kit de
ferramentas para desenvolvimento Android; e você precisa do SQLite, que é uma biblioteca para
implementar um banco de dados e armazenar dados. Uma curiosidade engraçada também é
que cada versão do sistema operacional possui o nome de uma sobremesa – a versão atual é
a Marshmallow 6.0.
A imagem acima apresenta três peculiaridades: primeiro, ela infelizmente não mostra as duas
últimas versões: Lollipop e Marshmallow; segundo, a versão Honeycomb foi lançada, a princípio,
para tablets; e terceiro, a partir da versão IceCream Sandwich 4.0, o Android passou-se a se basear
no kernel 3.x e, não mais, no kernel 2.6 do Linux. Vamos agora ver o slogan de cada versão:
VERSÃO
SLOGAN
Android 1.6
Donut
A informação do mundo está ao seu alcance: pesquisar na Web,
receber rotas de trânsito... ou apenas assistir a vídeos de gatos.
Diego Carvalho, Pedro Henrique Chagas Freitas
Aula 07
Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
Curso Regular de Desenvolvimento de Software
www.estrategiaconcursos.com.br
22
59
Android 2.0
Eclair
Sua tela inicial do jeito que quiser. Organize apps e widgets em
várias telas e pastas. Planos de fundo interativos respondem ao
toque.
Android 2.2
Froyo
A Digitação por voz escreve o texto por você e as Ações de voz
permitem que você controle seu smartphone sem precisar digitar.
Android 2.3
Gingerbread
Novos sensores fazem do Android uma ótima plataforma para
jogos. Assim você pode tocar, inclinar e se divertir.
Android 3.0
Honeycomb
Otimizada para tablets, esta versão abre novos horizontes onde
quer que você esteja.
Android 4.0
IceCream Sandwich
O Android atinge a maioridade com um design novo e refinado.
Simples, bonito e muito inteligente.
Android 4.1
Jelly Bean
O Android fica mais rápido, suave e com um visual incrível. Com o
Google Now, você tem a informação certa na hora certa.
Android 4.4
Kitkat
Inteligente, simples e totalmente seu. Um design mais refinado,
melhor desempenho e novos recursos.
Android 5.0
Lollypop
Mais doce novidade do Android. Tenha a elegância do Android em
telas grandes e pequenas, com informação certa no momento
certo.
Android 6.0
Marshmellow
O Android Marshmallow chega para adocicar a experiência do
sistema da Google com diversos retoques em vários aspectos.
O Android roda sobre uma máquina virtual chamada Dalvik VM! Trata-se de uma máquina
virtual otimizada para requerer pouca memória e processamento, e projetada para permitir que
múltiplas instâncias da máquina virtual rodem ao mesmo tempo, deixando para o sistema
operacional o isolamento de processos, o gerenciamento de memória e o suporte a threading.
Uma máquina virtual é uma aplicação de software que se comporta como se fosse um
dispositivo independente com seu próprio sistema operacional. Quem aí já instalou VMWare?
Vocês sabem, então, que podem rodar uma máquina virtual em um computador que opera com
um sistema operacional completamente diferente do sistema operacional da máquina física.
Diego Carvalho, Pedro Henrique Chagas Freitas
Aula 07
Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
Curso Regular de Desenvolvimento de Software
www.estrategiaconcursos.com.br
23
59
Eu, por exemplo, tenho um MacBook, no entanto eu instalei uma máquina virtual que roda
Windows! Então é possível rodar um Windows no Macbook? Sim, por meio de uma máquina virtual.
A Dalvik é frequentemente referenciada como uma Máquina Virtual Java, mas isso não é
estritamente exato, porque o bytecode que ela opera não é o bytecode da JVM.
Em vez disso, uma ferramenta de conversão chamada dx, incluída no SDK Android, converte os
arquivos .class de uma classe compilada por um compilador Java comum para a JVM em outro
formato especifico de classe (.dex). Vejam a imagem abaixo! Observem que o Android não roda
diretamente sobre a JVM! Apesar de ser escrito em Java, ele roda diretamente sobre o Dalvik
VM.
Vamos bater um papo agora sobre a Arquitetura Android! O Google geralmente se refere ao
Android como uma pilha de softwares. Cada camada da pilha agrupa vários programas que
suportam funções específicas do sistema operacional. Conforme mostra a imagem, a base da
pilha é a Camada de Linux Kernel, que inclui algumas funcionalidades. Quais, professor?
Gerenciador de memória, configurações de segurança, gerenciador de energia e vários drivers de
hardware (Audio, Bluetooth, Câmera, entre outros). Para quem não sabe, drivers são
Diego Carvalho, Pedro Henrique Chagas Freitas
Aula 07
Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
Curso Regular de Desenvolvimento de Software
www.estrategiaconcursos.com.br
24
59
programas que controlam os dispositivos de hardware. Exemplo: Meu Moto X tinha uma
câmera! O Kernel do Android contém um driver que permite ao usuário enviar comandos ao
hardware da câmera.
Percebam, pela imagem, que a câmera do celular está na camada de Abstração de Hardware,
onde se encontram os recursos de hardware. Acima temos a Camada de Bibliotecas! Pode-se
pensar em bibliotecas como um conjunto de instruções que dizem ao dispositivo como lidar com
diferentes tipos de dados. Falou em biblioteca, deve-se lembrar de multimídia, Webkit
(Renderizador de Browsers), SQLite (BD), etc.
Outras bibliotecas incluem aceleração tridimensional (para dispositivos com acelerômetros)
e um biblioteca de navegadores Web. No mesmo nível da camada de bibliotecas, a Camada de
Runtime inclui um conjunto de bibliotecas do núcleo Java – lembrando que programadores de
aplicações Android constroem suas aplicações em Java. Ele também inclui a Máquina Virtual
Dalvik (DVM).
A Camada Framework de Aplicações apresenta programas que gerenciam as funções básicas do
telefone, como alocação de recursos, aplicações de telefone, mudança entre processos ou
programas, e softwares de localização física do aparelho. Os desenvolvedores de aplicações têm
acesso total ao Framework de Aplicações do Android.
Diego Carvalho, Pedro Henrique Chagas Freitas
Aula 07
Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
Curso Regular de Desenvolvimento de Software
www.estrategiaconcursos.com.br
25
59
Isso possibilita que os desenvolvedores tirem vantagem das capacidades de processamento do
Android e suportem recursos quando estão construindo suas aplicações móveis. O framework de
aplicações é como um conjunto de ferramentas básicas com as quais um desenvolvedor pode
construir aplicações e ferramentas muito mais complexas.
Ela fornece todas as funcionalidades necessárias para a construção de aplicativos, por meio
de bibliotecas nativas. Se a prova perguntar qual camada contém as funcionalidades que auxiliam
o desenvolvedor na criação de aplicativos, o que vocês respondem? Tem que ser automático:
Framework de Aplicação. Vejam que existem vários gerenciadores (de atividade, janela,
conteúdo, notificação, entre outros).
No topo da pilha está a Camada de Aplicações! Encontram-se funções básicas do dispositivo,
chamadas telefônicas, acesso ao navegador ou acesso à lista de contatos. Sabe aqueles aplicativos
que você instala no seu celular? Estão aqui também! Whatsapp, Facebook, Tinder, Instagram...
estão todos aqui! Se você é um usuário comum, esta é a camada que você mais usará.
Diego Carvalho, Pedro Henrique Chagas Freitas
Aula 07
Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
Curso Regular de Desenvolvimentode Software
www.estrategiaconcursos.com.br
26
59
Em geral, apenas os programadores do Google, os desenvolvedores de aplicação e os
fabricantes de hardware acessam as camadas mais baixas. Vamos resumir em palavras-chave?
Camada de Kernel: drivers; Camada de Abstração de Hardware: recursos de hardware; Camada
de Bibliotecas: bibliotecas mesmo; Camada de Runtime: DVM;
Camada de Framework de Aplicação: Gerenciadores para desenvolvedores; Camada de
Aplicações: apps do dispositivo. Algumas observações: alguns consideram a Camada de
Runtime como uma camada separada e outros consideram-na como parte da Camada de
Bibliotecas. Ademais, alguns consideram a Camada de Abstração de Hardware como parte da
Camada de Bibliotecas.
Vamos ver agora um pouco sobre os componentes de um aplicativo! O que é isso, professor? Os
componentes de aplicativo são os blocos de construção fundamentais de um aplicativo do
Android. Cada componente é um ponto diferente pelo qual o sistema pode entrar no aplicativo.
Nem todos os componentes são pontos de entrada reais para o usuário e alguns dependem uns
dos outros.
No entanto, cada um existe como uma entidade independente e desempenha uma função
específica – cada um é um bloco de construção exclusivo que ajuda a definir o comportamento
geral do aplicativo. Há quatro tipos diferentes de componentes de aplicativo. Cada tipo tem
uma finalidade distinta e tem um ciclo de vida específico que define a forma pela qual o
componente é criado e destruído.
A seguir apresentam-se os quatro tipos de componentes de aplicativos:
▪ Atividades (Activities):
As atividades representam uma tela única com uma interface do usuário. Por exemplo: um
aplicativo de e-mails pode ter uma atividade para mostrar uma lista de novos e-mails, outra
atividade para escrever um e-mail e outra para ler e-mails. Embora essas atividades funcionem
juntas para formar uma experiência de usuário coesa no aplicativo de e-mails, elas são
independentes entre si.
Diego Carvalho, Pedro Henrique Chagas Freitas
Aula 07
Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
Curso Regular de Desenvolvimento de Software
www.estrategiaconcursos.com.br
27
59
Dessa forma, um outro aplicativo pode iniciar qualquer uma dessas atividades (se o aplicativo
de e-mails permitir). Por exemplo: um aplicativo de câmera pode iniciar a atividade no aplicativo
de e-mail. Vocês já tiraram uma foto no celular e a enviaram por e-mail? Pois é! Você pode iniciar a
atividade de escrita de e-mail lá no aplicativo da câmera. Bacana?
Em suma, o Componente de Atividade é um componente que representa cada tela da aplicação.
Pegue seu smartphone agora, abra algum aplicativo (Ex: Facebook) e vá interagindo e
trocando de telas – cada tela será uma atividade. As atividades são classes Java compostas por
subcomponentes chamados de Visão (View). O que é isso, professor?
É uma classe que representa o bloco de construção básico de um Componente de UI. Galera, é a
telinha retangular da tela do seu dispositivo – ela é responsável por realizar desenhos e
tratamento de eventos. Bacana, então as atividades são compostas de visões e representam
uma tela única da interface do usuário. Agora nós vamos conhecer as Intenções.
▪ Intenções (Intents):
Uma Intenção (Intent) é uma descrição abstrata de uma operação a ser executada. Ela pode
ser utilizada para iniciar uma Atividade, para ativar um broadcast, para enviar uma mensagem
para uma aplicação que roda em outro processo, entre outros. Podemos dizer que ele envia uma
solicitação para o que Android realize alguma ação.
Por exemplo: para que o sistema saia de uma atividade para outra, dispara-se uma intenção. A
documentação oficial afirma que seu uso mais significativo ocorre quando da inicialização de uma
Atividade, e que também podemos imaginá-lo como uma cola entre atividades. É uma estrutura
de dados que armazena uma ação a ser executada. Certinho?
▪ Serviços (Services):
Diego Carvalho, Pedro Henrique Chagas Freitas
Aula 07
Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
Curso Regular de Desenvolvimento de Software
www.estrategiaconcursos.com.br
28
59
Os serviços são componentes executados em segundo plano para realizar operações de
execução longa ou para realizar trabalho para processos remotos. Eles não apresentam uma
interface do usuário. Por exemplo: um serviço pode tocar música em segundo plano enquanto o
usuário está em um aplicativo diferente ou buscar dados na rede sem bloquear a interação do
usuário com uma atividade.
Outro componente, como uma atividade, pode iniciar o serviço e deixá-lo executar ou vincular-se
a ele para interagir. Deve-se atentar ao fato de que eles não são um processo separado. Eles
rodam na thread principal do processo corrente e possuem seu próprio ciclo de vida. Os serviços
devem estar declarados no AndroidManifest.xml – não confundir com o arquivo principal do
projeto AndroidManifet.xml.
▪ Receptores de Broadcast (Broadcast Receivers):
Os Receptores de Broadcast são componentes que respondem a anúncios de broadcast por todo
o sistema. Muitos broadcasts se originam do sistema - por exemplo, um broadcast que anuncia
que uma tela foi desligada, que a bateria está baixa ou que uma tela foi capturada. Uma
pequena pausa: um broadcast é a transmissão de uma mensagem.
Os aplicativos também podem iniciar transmissões — por exemplo, para comunicar a outros
dispositivos que alguns dados foram baixados no dispositivo e estão disponíveis para uso.
Embora os Receptores de Broadcast não exibam nenhuma interface do usuário, eles podem criar
uma notificação na barra de status para alertar ao usuário quando ocorre uma transmissão.
Mais comumente, no entanto, um receptor de transmissão é somente um "portal" para outros
componentes e realiza uma quantidade mínima de trabalho. Por exemplo: ele pode iniciar um
serviço para executar um trabalho baseado no evento. Então, os receptores de broadcast
simplesmente respondem a mensagens de broadcast de outras aplicações ou do próprio sistema.
▪ Provedores de Conteúdo (Content Provider):
Diego Carvalho, Pedro Henrique Chagas Freitas
Aula 07
Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
Curso Regular de Desenvolvimento de Software
www.estrategiaconcursos.com.br
29
59
Os provedores de conteúdo gerenciam um conjunto compartilhado de dados do aplicativo. É
possível armazenar os dados no sistema de arquivos, em um banco de dados SQLite ou em
qualquer local de armazenamento persistente que o aplicativo possa acessar. Por meio do
provedor de conteúdo, outros aplicativos podem consultar ou até modificar os dados (se o
provedor de conteúdo permitir).
Por exemplo: o Android oferece um provedor de conteúdo que gerencia as informações de
contato do usuário. Assim, qualquer aplicativo com as permissões adequadas pode consultar
parte do provedor de conteúdo para ler e gravar informações sobre uma pessoa específica. Os
provedores de conteúdo são úteis para ler e gravar dados privados no aplicativo e não
compartilhados.
As aplicações poderiam muito bem acessar diretamente um banco de dados, por exemplo.
Porém, é uma boa prática tornar o modo como os dados são gravados transparente à aplicação.
Dessa forma, a aplicação pode manter o foco nas interações com o usuário. Por exemplo: o
Provedor de Conteúdo de SMS permite a qualquer aplicação ler as mensagens recebidas por
um telefone celular.
Por fim, vamos ver rapidinho a estrutura de diretórios de um Projeto Android. Galera, quando
criamos um Projeto Android, ele gera uma estrutura com diversas pastase arquivos conforme
mostra a imagem acima. Professor, tenho que decorar tudo? Não é obrigatório, mas seria
interessante saber com mais detalhes sobre as pastas src, gen e res, e sobre o arquivo
AndroidManifest.xml.
Diego Carvalho, Pedro Henrique Chagas Freitas
Aula 07
Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
Curso Regular de Desenvolvimento de Software
www.estrategiaconcursos.com.br
30
59
▪ Pasta src
Vem de Source e contém os pacotes e classes do projeto. Todas as classes criadas na aplicação
serão colocadas neste diretório em seu devido pacote.
▪ Pasta gen
Vem de Generated e contém a Classe R, que é gerada automaticamente e faz referência a todos
os elementos que existirem em um arquivo de tela XML.
▪ Pasta res
Vem de Resources e contém arquivos importantes para a aplicação com as telas, imagens e textos
que estiverem em sua aplicação (facilita a internacionalização).
Diego Carvalho, Pedro Henrique Chagas Freitas
Aula 07
Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
Curso Regular de Desenvolvimento de Software
www.estrategiaconcursos.com.br
31
59
▪ Arquivo AndroidManifest.xml
Esse arquivo deve estar sempre na raiz do projeto e contém todas as configurações que a
aplicação utiliza para poder ser executada.
Diego Carvalho, Pedro Henrique Chagas Freitas
Aula 07
Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
==134dde==
Curso Regular de Desenvolvimento de Software
www.estrategiaconcursos.com.br
32
59
QUESTÕES ANDROID
1. (CESPE – 2012 – DPF – Analista de Sistemas) O sistema Android 4.0 foi desenvolvido com
base no kernel Linux versão 2.6 e é voltado para dispositivos móveis controlando os serviços
do sistema, como gerenciamento de memória e de tarefas, diretivas de segurança e drivers.
Comentários:
A imagem acima apresenta três peculiaridades: primeiro, ela infelizmente não mostra as duas
últimas versões: Lollipop e Marshmallow; segundo, a versão Honeycomb foi lançada, a princípio,
para tablets; e terceiro, a partir da versão IceCream Sandwich 4.0, o Android passou-se a se basear
no kernel 3.x e, não mais, no kernel 2.6 do Linux. Vamos agora ver o slogan de cada versão:
Conforme vimos em aula, a partir da versão IceCream Sandwich 4.0, o Android passou a ser
baseado no kernel 3.x e, não, 2.6.
Gabarito: E
2. (CESPE – 2013 – ANTT – Analista de Sistemas) Com o uso do banco de dados SQLite, incluso
no Android, é possível desenvolver um provedor de conteúdo, bem como um servidor de
banco de dados, que necessita gerenciar o acesso aos dados com persistência. No entanto,
não se justifica a utilização de um provedor de conteúdo para disponibilizarem-se dados para
várias atividades ou aplicativos distintos.
Comentários:
Os provedores de conteúdo gerenciam um conjunto compartilhado de dados do aplicativo. É possível
armazenar os dados no sistema de arquivos, em um banco de dados SQLite ou em qualquer local de
armazenamento persistente que o aplicativo possa acessar. Por meio do provedor de conteúdo,
outros aplicativos podem consultar ou até modificar os dados (se o provedor de conteúdo
permitir).
Diego Carvalho, Pedro Henrique Chagas Freitas
Aula 07
Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
Curso Regular de Desenvolvimento de Software
www.estrategiaconcursos.com.br
33
59
Conforme vimos em aula, o provedor de conteúdo é como uma base de dados que provê
conteúdo! Ora, se essa é a função dele, não faz sentido dizer que não se justifica sua utilização
para disponibilizar dados para várias atividades ou aplicativos distintos. Como não? Essa é a
função dele!
Gabarito: E
3. (CESPE – 2015 – TCU – Analista de Sistemas) No desenvolvimento de aplicação para
dispositivos móveis, em vez de se utilizar uma plataforma específica ou um ambiente cross-
platform, pode-se optar por um tipo híbrido, como, por exemplo, um componente HTML 5
envelopado em containers para acessar recursos específicos de cada plataforma.
Comentários:
A aplicação híbrida nada mais é que uma aplicação web (HTML5, CSS3, etc) envelopada em um
contêiner nativo. Existem dezenas de ferramentas para gerar esse contêiner nativo para cada
plataforma, tais como Cordova, Sencha Touch, etc. Para diferenciar todas essas abordagens, eu
recomendo que façamos uma comparação geral. Atenção no quadro abaixo:
Conforme vimos em aula, a aplicação híbrida envelopa uma aplicação web comum (Ex: HTML5)
com o auxílio de uma ferramenta (Ex: Cordova) – simulando uma aplicação nativa – e, dessa
forma, ele se torna capaz de acessar recursos específicos de cada plataforma. No entanto, o
examinador cometeu um vacilo: o início da questão dá a entender que um tipo híbrido não é um
ambiente cross-platform. Bem, basta ver a imagem hierárquica colocada em aula para perceber
que isso não faz sentido, mas a questão infelizmente não foi anulada.
Gabarito: C
Diego Carvalho, Pedro Henrique Chagas Freitas
Aula 07
Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
Curso Regular de Desenvolvimento de Software
www.estrategiaconcursos.com.br
34
59
4. (CESPE – 2013 – ANTT – Analista de Sistemas) Com base no kernel Linux, o ambiente
operacional Android, utilizado para o desenvolvimento de aplicações móveis e não móveis,
inclui um navegador incorporável baseado em WebKit, com muitas opções de conectividade
(wifi, bluetooth, dados wireless através de conexão celular, como GPRS, EDGE e 3G). Os
aplicativos Android são gravados na linguagem Java e executados em uma máquina virtual
JVM.
Comentários:
O Android roda sobre uma máquina virtual chamada Dalvik VM! Trata-se de uma máquina virtual
otimizada para requerer pouca memória e processamento, e projetada para permitir que múltiplas
instâncias da máquina virtual rodem ao mesmo tempo, deixando para o sistema operacional o
isolamento de processos, o gerenciamento de memória e o suporte a threading.
Conforme vimos em aula, os aplicativos são escritos em Java, mas rodam em uma Dalvik VM e,
não, Java VM.
Gabarito: E
5. (CESPE – 2013 – TCE/RO – Analista de Sistemas) No Android, os componentes Intents são
criados a partir de ações do usuário e representam a intenção de se realizar alguma atividade,
como iniciar o aplicativo de correio eletrônico ou abrir uma página, utilizando-se do
navegador que acompanha o Android. O código mostrado a seguir apresenta corretamente
um exemplo de utilização desse componente.
Uri uri = Uri.parse("http://www.cespe.unb.br");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
Comentários:
Diego Carvalho, Pedro Henrique Chagas Freitas
Aula 07
Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
Curso Regular de Desenvolvimento de Software
www.estrategiaconcursos.com.br
35
59
Uma Intenção (Intent) é uma descrição abstrata de uma operação a ser executada. Ela pode ser
utilizada para iniciar uma Atividade, para ativar um broadcast, para enviar uma mensagem para uma
aplicação que roda em outro processo, entre outros. Podemos dizer que ele envia uma solicitação
para o que Android realize alguma ação.
Conforme vimos em aula, a questão está perfeita! Ela exagerou, colocando código de
programação, mas esse código está apenas criando uma intenção de visualizar a páginahttp://www.cespe.unb.br.
Gabarito: C
6. (CESPE – 2013 – FUB – Analista de Sistemas) O Android pode ser executado sobre qualquer
sistema operacional, pois os aplicativos Android são escritos na linguagem de programação
Java e executados em uma máquina virtual Java.
Comentários:
O Android roda sobre uma máquina virtual chamada Dalvik VM! Trata-se de uma máquina virtual
otimizada para requerer pouca memória e processamento, e projetada para permitir que múltiplas
instâncias da máquina virtual rodem ao mesmo tempo, deixando para o sistema operacional o
isolamento de processos, o gerenciamento de memória e o suporte a threading.
Conforme vimos em aula, Android é executado na Dalvik VM e, não, Java VM.
Gabarito: E
7. (IBFC – 2013 – PC – Analista de Sistemas) É uma plataforma de software que está
revolucionando o mercado global de aplicativos para celulares. É a primeira plataforma de
Diego Carvalho, Pedro Henrique Chagas Freitas
Aula 07
Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
Curso Regular de Desenvolvimento de Software
www.estrategiaconcursos.com.br
36
59
aplicativos para telefones celulares de código aberto que se fez notar pelos maiores mercados
mundiais de telefonia celular. Estamos falando do:
a) Unix.
b) Linux.
c) Android.
d) Mac OS X.
e) Windows.
Comentários:
Galera, somente uma opção trata de um sistema operacional móvel: Android.
Gabarito: C
8. (CESPE – 2014 – ANATEL – Analista de Sistemas) A arquitetura do Android disponibiliza o
módulo denominado OOM handling, que permite às aplicações o gerenciamento do
mecanismo de baixo consumo de energia do aparelho; por exemplo, se um processo
necessitar ser executado em segundo plano, o referido módulo possibilitará a desativação
temporária desse mecanismo até a finalização do processo em execução.
Comentários:
Essa era uma questão para ninjas! Deseja-se avaliar na questão se o aluno conhece os módulos
específicos de cada funcionalidade – eu acho ridículo cobrar isso, mas vamos lá! O Módulo OOM
Handling (Out Of Memory) trata do gerenciamento de memória, sendo que quem trata do
gerenciamento de energia é o Módulo Wakelocks, logo a questão está errada!
Gabarito: E
Diego Carvalho, Pedro Henrique Chagas Freitas
Aula 07
Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
Curso Regular de Desenvolvimento de Software
www.estrategiaconcursos.com.br
37
59
9. (FCC – 2011 – TRE/PE – Analista de Sistemas) A versão do Android feita, a princípio, apenas
para tablets, que apresenta melhorias nos recursos multitarefa e nos widgets, é considerada
como:
a) Cupcake
b) Frozen Yogurt
c) Gingerbread.
d) Honeycomb.
e) Ice Cream.
Comentários:
A imagem acima apresenta três peculiaridades: primeiro, ela infelizmente não mostra as duas
últimas versões: Lollipop e Marshmallow; segundo, a versão Honeycomb foi lançada, a princípio,
para tablets; e terceiro, a partir da versão IceCream Sandwich 4.0, o Android passou-se a se basear
no kernel 3.x e, não mais, no kernel 2.6 do Linux. Vamos agora ver o slogan de cada versão:
Conforme vimos em aula, trata-se da versão Honeycomb.
Gabarito: D
10. (CESPE – 2013 – SERPRO – Analista de Sistemas) Em uma aplicação desenvolvida para
Android, os serviços que forem executados em background serão implementados como
componentes do tipo service e permanecerão em execução até que a aplicação que os
instanciar seja encerrada.
Comentários:
Diego Carvalho, Pedro Henrique Chagas Freitas
Aula 07
Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
Curso Regular de Desenvolvimento de Software
www.estrategiaconcursos.com.br
38
59
Outro componente, como uma atividade, pode iniciar o serviço e deixá-lo executar ou vincular-se a
ele para interagir. Deve-se atentar ao fato de que eles não são um processo separado. Eles rodam
na thread principal do processo corrente e possuem seu próprio ciclo de vida. Os serviços devem estar
declarados no AndroidManifest.xml – não confundir com o arquivo principal do projeto
AndroidManifet.xml.
Conforme vimos em aula, os services são realmente executados em background, mas não
permanecem em execução até que a aplicação que os instanciar seja encerrada – cada aplicação
tem seu próprio ciclo de vida independente.
Gabarito: E
11. (QUADRIX – 2013 – CREFONO – Analista de Sistemas) Como o software Android, da
empresa Google, pode ser classificado?
a) Um aplicativo para celulares.
b) Um aplicativo para celulares e tablets.
c) Um sistema operacional para celulares e tablets.
d) Um hardware para celulares e tablets.
e) Um tipo de celular.
Comentários:
Android é um sistema operacional móvel pertencente ao Google! Apesar disso, ele continua tendo
código aberto, mas com aplicações com software de código fechado. Galera, quem aí tem um
celular com Android? Vocês devem saber que é possível trocar a ROM! Professor, o que é ROM? É
como um firmware personalizado do sistema operacional – pensem como uma customização do
sistema operacional.
Conforme vimos em aula, trata-se de um sistema operacional para celulares e tablets (e outros).
Diego Carvalho, Pedro Henrique Chagas Freitas
Aula 07
Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
Curso Regular de Desenvolvimento de Software
www.estrategiaconcursos.com.br
39
59
Gabarito: C
12. (FUMARC – 2014 – AL/MG – Analista de Sistemas) Em relação aos principais componentes
de um aplicativo Android, analise os itens a seguir, marcando com (V) a assertiva verdadeira
e com (F) a assertiva falsa.
( ) Uma “atividade” do Android é tanto uma unidade de interação do usuário quanto uma
unidade de execução.
( ) Um programa Android interativo é iniciado pela criação de subclasses da classe Activity.
( ) A classe ContentProvider do Android é utilizada em tarefas de segundo plano, que podem
estar ativas, mas não visíveis na tela.
( ) A classe Service do Android possui o quarteto de atividades básicas para inserção, consulta,
atualização e exclusão.
A sequência CORRETA, de cima para baixo, é:
a) V, F, F, V.
b) F, V, F, V.
c) F, V, V, F.
d) V, V, F, F.
Comentários:
Conforme vimos em aula, a atividade é realmente uma unidade de interação, na medida que é
uma visão, e ela é também uma unidade de execução (o nome já dá a dica); o segundo item
também está perfeito, visto que se deve herdar de Activity para iniciar uma interação; os dois
últimos itens foram invertidos.
Gabarito: D
13. (CESPE – 2014 – ANATEL – Analista de Sistemas) O sistema operacional Android tem o
Linux como base, o que permite a utilização simultânea de aplicações que podem ser
executadas em segundo plano, de forma transparente para o usuário.
Diego Carvalho, Pedro Henrique Chagas Freitas
Aula 07
Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
Curso Regular de Desenvolvimento de Software
www.estrategiaconcursos.com.br
40
59
Comentários:
Os serviços são componentes executados em segundo plano para realizar operações de
execução longa ou para realizar trabalho para processos remotos. Eles não apresentam uma
interface do usuário. Por exemplo: um serviço pode tocar música em segundo plano enquanto o
usuário está em um aplicativo diferente ou buscar dados na rede sem bloquear a interação do usuário
com uma atividade.
Conforme vimos em aula, temos os services (que rodam em segundo plano).
Gabarito: C
14. (CESPE– 2017 – TRE/BA - Analista de Sistemas) Ao criar um novo projeto padrão por meio
do Android Studio, o programador poderá desenvolver sua APP para diversos dispositivos.
Nesse sentido, com o objetivo de criar um jogo para smartphones, os arquivos de som deverão
ser armazenados dentro da estrutura padrão do diretório:
a) manifest.
b) layout.
c) menu.
d) res.
e) Java.
Comentários:
Diego Carvalho, Pedro Henrique Chagas Freitas
Aula 07
Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
Curso Regular de Desenvolvimento de Software
www.estrategiaconcursos.com.br
41
59
(a) Errado, não existe esse diretório. Existe o arquivo AndroidManifest.xml que contém a
configuração que a aplicação utiliza para poder ser executada; (b) Errado, o Diretório “layout”
armazena todos os arquivos referentes às telas de uma aplicação Android, que normalmente são
arquivos “.xml”; (c) Errado, o Diretório “menu” armazena o arquivo responsável por gerenciar e
exibir os itens de menu da aplicação; (d) Correto, o Diretório “res” (Resources) contém todos os
recursos que são utilizados em uma aplicação Android (imagens, sons, músicas, etc); (e) Errado,
não existe esse diretório.
Gabarito: D
ACERTEI ERREI
Diego Carvalho, Pedro Henrique Chagas Freitas
Aula 07
Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
Curso Regular de Desenvolvimento de Software
www.estrategiaconcursos.com.br
42
59
IOS
O iOS, que antes era chamado de iPhoneOS, é um sistema operacional móvel pertencente à
Apple! Lançado em 2007, roda no iPhone, iPod, iPad e Apple TV. Ele é derivado do sistema
operacional dos desktops, chamado MacOS X. Novas versões são lançadas anualmente
geralmente em junho. O número de usuários que utiliza iPhone/iPad tem aumentado bastante.
Isso cria a oportunidade para os desenvolvedores ganharem dinheiro com a criação de aplicativos
para iPhone e iPad na Apple Store. Professor, o código é aberto? Não, diferentemente do Android,
o código é fechado. Professor, as aplicações nativas devem ser desenvolvidas em Java? Não,
diferentemente do Android, é Objective-C. Vamos ver agora um pouco da Arquitetura do iOS.
No mais alto nível, o iOS atua como um intermediário entre o hardware subjacente e os
aplicativos – ora, aplicativos não conversam com o hardware diretamente. Em vez disso, se
comunicam com o hardware através de um conjunto de interfaces bem definidas. Essas
interfaces tornam mais fácil a criação de aplicativos que funcionam consistentemente em
dispositivos com diferentes capacidades de hardware.
Diego Carvalho, Pedro Henrique Chagas Freitas
Aula 07
Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
Curso Regular de Desenvolvimento de Software
www.estrategiaconcursos.com.br
43
59
A Arquitetura iOS é dividida em quatro camadas! As inferiores apresentam serviços e tecnologias
fundamentais; as superiores, serviços e tecnologias mais sofisticados. A Camada Cocoa Touch
contém os principais frameworks para construir aplicativos. Esses frameworks definem a
aparência do aplicativo e fornecem a infraestrutura e suporte básicos para tecnologias como:
multitarefa, entrada por toque, etc.
OBSERVAÇÃO
O Cocoa Touch define uma arquitetura básica (MVC) para criação de aplicativos:
“MVC is central to a good design for a Cocoa application. The benefits of adopting this pattern are
numerous. Many objects in these applications tend to be more reusable, and their interfaces tend to be
better defined. Applications having an MVC design are also more easily extensible than other applications.
Moreover, many Cocoa technologies and architectures are based on MVC and require that your custom
objects play one of the MVC roles”.
Diego Carvalho, Pedro Henrique Chagas Freitas
Aula 07
Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
Curso Regular de Desenvolvimento de Software
www.estrategiaconcursos.com.br
44
59
Ao desenhar aplicativos, deve-se investigar as tecnologias dessa camada para ver se elas
satisfazem suas necessidades. Existem dois frameworks principais: UIKit, que fornece
ferramentas básicas para implementar aplicações gráficas e orientadas a eventos; e Foundation,
que fornece funcionalidades nucleares e essenciais necessárias para a criação de um aplicativo.
A Camada Media contém os frameworks que contém as tecnologias de criações de gráfico, áudio
e vídeos que você pode utilizar para implementar multimídia em seus aplicativos. A Camada Core
Services contém os frameworks que fornecem serviços essenciais para as aplicações e para as
camadas superiores. Os principais frameworks são: Core Foundation e Foundation.
Esses frameworks definem tipos básicos utilizados por todos os aplicativos. Essa camada
também contém tecnologias individuais para suportar características como: Location, iCloud,
Social Media e Networking. Detalhe importante: o Foundation faz parte da Camada Cocoa Touch
e Core Services. Por fim, a Camada Core OS trata de funcionalidades de mais baixo nível.
Mesmo que você não utilize essas tecnologias diretamente em seus aplicativos,
provavelmente eles estão sendo utilizados por outros frameworks. Nessa camada, trata-se de
gerenciamento de memória, threads, processamento, drivers, entre outros recursos. Por fim, o
iOS não implementa um Garbage Collector, mas o Objective-C possui um Automatic Reference
Counting (ARC) para liberar a memória.
Dessa forma, o programador não tem que ficar preocupado em liberar referências. Para
acabar, o ambiente nativo para desenvolvimento de aplicativos para o iOS é o XCode! Ele suporta
por padrão Objective-C e AppleScript. Além disso, ele possui ferramentas para criação, design e
debug de aplicações iOS. Da mesma forma que é comum usar o Eclipse para o Android, é comum
usar o XCode para o iOS.
Diego Carvalho, Pedro Henrique Chagas Freitas
Aula 07
Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
Curso Regular de Desenvolvimento de Software
www.estrategiaconcursos.com.br
45
59
QUESTÕES IOS
1. (CESPE – 2012 – DPF – Analista de Sistemas) A arquitetura do iOS possui quatro camadas
(layers) que funcionam como interface entre a aplicação e o hardware. Essas camadas,
listadas da mais baixa para a mais alta, são: Core OS, Core Services, Media e CoCoa Touch.
Comentários:
Conforme vimos em aula, a questão está perfeita!
Diego Carvalho, Pedro Henrique Chagas Freitas
Aula 07
Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
Curso Regular de Desenvolvimento de Software
www.estrategiaconcursos.com.br
46
59
Gabarito: C
2. (CESPE – 2013 – SERPRO – Analista de Sistemas) Como o iOS não implementa um sistema
de garbage collection, o Objective-C mantém um contador de referência para os objetos de
forma a viabilizar a liberação de memória de tal objeto.
Comentários:
Mesmo que você não utilize essas tecnologias diretamente em seus aplicativos, provavelmente
eles estão sendo utilizados por outros frameworks. Nessa camada, trata-se de gerenciamento de
memória, threads, processamento, drivers, entre outros recursos. Por fim, o iOS não implementa um
Garbage Collector, mas o Objective-C possui um Automatic Reference Counting (ARC) para liberar a
memória.
Conforme vimos em aula, a questão está perfeita!
Gabarito: C
3. (FUMARC –2014 – AL/MG – Analista de Sistemas) Analise as seguintes afirmativas sobre
fundamentos para desenvolvimento de aplicações móveis para iOS.
I. Xcode é o ambiente nativo da Apple para desenvolvimento de aplicativos para iOS.
II. Objective-C é a linguagem de desenvolvimento de aplicativos para iOS.
III. A classe NSObject é a classe raiz das principais hierarquias de classes em Objective-C.
Estão CORRETAS as afirmativas:
a) I, II e III.
b) I e II, apenas.
Diego Carvalho, Pedro Henrique Chagas Freitas
Aula 07
Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
Curso Regular de Desenvolvimento de Software
www.estrategiaconcursos.com.br
47
59
c) I e III, apenas.
d) II e III, apenas.
Comentários:
Dessa forma, o programador não tem que ficar preocupado em liberar referências. Para acabar,
o ambiente nativo para desenvolvimento de aplicativos para o iOS é o XCode! Ele suporta por padrão
Objective-C e AppleScript. Além disso, ele possui ferramentas para criação, design e debug de
aplicações iOS. Da mesma forma que é comum usar o Eclipse para o Android, é comum usar o XCode
para o iOS.
Conforme vimos em aula, o ambiente para desenvolvimento de aplicativos é o XCode; a
linguagem para criação de aplicativos é o Objective-C; quem conhece Java sabe que todas as
classes descendem de Object – no Objective-C, as principais classes descendem de NSObject.
Gabarito: A
4. (CESPE – 2014 – SUFRAMA – Analista de Sistemas) Para que os programas aplicativos sejam
executados no Android e no iOS, é necessário uma máquina virtual própria, cujas
responsabilidades são, entre outras, gerenciar a comunicação entre o aplicativo e as
bibliotecas nativas, prover segurança e permitir que os aplicativos possam gravar dados
privados, incluindo bancos de dados. No Android 4.3, a máquina virtual é a Dalvik; no iOS 7, é
a XCode.
Comentários:
Dessa forma, o programador não tem que ficar preocupado em liberar referências. Para acabar,
o ambiente nativo para desenvolvimento de aplicativos para o iOS é o XCode! Ele suporta por padrão
Objective-C e AppleScript. Além disso, ele possui ferramentas para criação, design e debug de
aplicações iOS. Da mesma forma que é comum usar o Eclipse para o Android, é comum usar o XCode
para o iOS.
Diego Carvalho, Pedro Henrique Chagas Freitas
Aula 07
Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
Curso Regular de Desenvolvimento de Software
www.estrategiaconcursos.com.br
48
59
Conforme vimos em aula, XCode é um ambiente de desenvolvimento e, não, uma máquina
virtual.
Gabarito: E
5. (CESPE – 2014 – SUFRAMA – Analista de Sistemas) No iOS 7, os frameworks são diretórios
que contêm biblioteca compartilhada dinâmica com recursos como arquivos de cabeçalho,
imagens e aplicativos auxiliares a serem utilizados no desenvolvimento dos aplicativos.
Comentários:
Perfeito! Esses frameworks são diretórios que contém um conjunto de bibliotecas compartilhadas
e dinâmicas com diversos recursos e serviços que auxiliam, direta ou indiretamente, no
desenvolvimento de aplicativos.
Gabarito: C
6. (CESPE – 2014 – SUFRAMA – Analista de Sistemas) O iOS 7 possui as camadas Cocoa Touch,
Media, Core Services e Core OS; esta última, que é a camada mais baixa, suporta aplicativos
desenvolvidos em 64 bits no modelo LP64.
Comentários:
Diego Carvalho, Pedro Henrique Chagas Freitas
Aula 07
Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
Curso Regular de Desenvolvimento de Software
www.estrategiaconcursos.com.br
49
59
Conforme vimos em aula, as quatro camadas estão corretas e a última suporta aplicativos 64 bits.
Professor, o que é modelo LP64? É um modelo de tamanho dos dados. Então, sim, a questão está
perfeita!
Gabarito: C
7. (CESPE – 2017 – TRE/BA - Analista de Sistemas) Na linguagem Swift do IOS, ao se declarar
o código var fruta=[“maça“, “banana“, “abacaxi“], a linguagem automaticamente entenderá
que fruta é array de:
a) integer.
b) floatings.
c) strings.
d) imutáveis.
e) double.
Diego Carvalho, Pedro Henrique Chagas Freitas
Aula 07
Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
Curso Regular de Desenvolvimento de Software
www.estrategiaconcursos.com.br
50
59
Comentários:
Essa questão é fácil, mas é interessante! Por que é fácil? Porque é possível responder rapidamente
ao notar que os elementos do array são todos strings. Por que é interessante? Porque – para quem
não conhece – dá a entender que Swift tem tipagem dinâmica, mas não é verdade. Swift é uma
linguagem de tipagem estática e forte, mas que possui inferência de tipo.
Gabarito: C
ACERTEI ERREI
Diego Carvalho, Pedro Henrique Chagas Freitas
Aula 07
Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
Curso Regular de Desenvolvimento de Software
www.estrategiaconcursos.com.br
51
59
LISTA DE EXERCÍCIOS
LISTA DE EXERCÍCIOS COMENTADOS (DIVERSAS BANCAS)
SISTEMAS MÓVEIS
1. (CESPE – 2014 – ANATEL – Analista de Sistemas) O desenvolvimento de aplicações
web e o de aplicações nativas são as principais formas de desenvolvimento móvel.
2. (CESPE – 2013 – BACEN – Analista de Sistemas) No projeto de aplicações para
dispositivos móveis, devem ser considerados, entre outros aspectos, as características
dos dispositivos de hardware para os quais a aplicação está sendo desenvolvida e o
consumo de energia gerado por cada recurso do sistema, visando-se a economia de
bateria.
3. (CESPE – 2017 – TRE/BA - Analista de Sistemas) Um APP que for desenvolvido de
forma híbrida, para funcionar no IOS e Android, além de agilizar e baratear o
processo de desenvolvimento, também:
a) será mais leve que o normal, pois possuirá menos código trafegando pela web.
b) será uma aplicação web convertida para rodar nas referidas plataformas.
c) será compilado de forma nativa no IOS e depois no Android.
d) acessará todas as bibliotecas nativas dos dispositivos.
e) será dependente das atualizações do sistema operacional.
4. (CESPE – 2017 – TRE/BA - Analista de Sistemas) Considerando que a experiência do
usuário vem evoluindo juntamente com as interfaces dos dispositivos móveis, assinale
a opção correta.
Diego Carvalho, Pedro Henrique Chagas Freitas
Aula 07
Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
Curso Regular de Desenvolvimento de Software
www.estrategiaconcursos.com.br
52
59
a) A utilização de carrosséis como método de interação deve ser evitada ou avaliada
cuidadosamente, devido ao alto percentual de desistência do usuário na navegação
entre as telas iniciais.
b) No caso de aplicações móveis que também existam em sítios, as telas na aplicação
devem ser semelhantes às do sítio para que seja aproveitada a experiência do
usuário.
c) Devem-se utilizar asteriscos, ou representação com sentido equivalente, para
esconder a senha digitada, sem permitir que a senha seja visualizada por terceiros
ou pelo próprio usuário.
d) Para manter a confidencialidade dos dados, o usuário deve fazer login a cada
acesso à aplicação, fazendo uso, caso seja de seu interesse, de aplicações
independentes para armazenamento de senha.
e) Para o usuário, é aceitável que a tela de abertura (splash screen) demore a ser
carregada, desde que a aplicação seja carregadacom a maioria das funcionalidades
já disponíveis.
LISTA DE EXERCÍCIOS COMENTADOS (DIVERSAS BANCAS)
ANDROID
1. (CESPE – 2012 – DPF – Analista de Sistemas) O sistema Android 4.0 foi desenvolvido
com base no kernel Linux versão 2.6 e é voltado para dispositivos móveis controlando
os serviços do sistema, como gerenciamento de memória e de tarefas, diretivas de
segurança e drivers.
Diego Carvalho, Pedro Henrique Chagas Freitas
Aula 07
Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
Curso Regular de Desenvolvimento de Software
www.estrategiaconcursos.com.br
53
59
2. (CESPE – 2013 – ANTT – Analista de Sistemas) Com o uso do banco de dados SQLite,
incluso no Android, é possível desenvolver um provedor de conteúdo, bem como
um servidor de banco de dados, que necessita gerenciar o acesso aos dados com
persistência. No entanto, não se justifica a utilização de um provedor de conteúdo
para disponibilizarem-se dados para várias atividades ou aplicativos distintos.
3. (CESPE – 2015 – TCU – Analista de Sistemas) No desenvolvimento de aplicação para
dispositivos móveis, em vez de se utilizar uma plataforma específica ou um ambiente
cross-platform, pode-se optar por um tipo híbrido, como, por exemplo, um
componente HTML 5 envelopado em containers para acessar recursos específicos de
cada plataforma.
4. (CESPE – 2013 – ANTT – Analista de Sistemas) Com base no kernel Linux, o ambiente
operacional Android, utilizado para o desenvolvimento de aplicações móveis e não
móveis, inclui um navegador incorporável baseado em WebKit, com muitas opções
de conectividade (wifi, bluetooth, dados wireless através de conexão celular, como
GPRS, EDGE e 3G). Os aplicativos Android são gravados na linguagem Java e
executados em uma máquina virtual JVM.
5. (CESPE – 2013 – TCE/RO – Analista de Sistemas) No Android, os componentes Intents
são criados a partir de ações do usuário e representam a intenção de se realizar
alguma atividade, como iniciar o aplicativo de correio eletrônico ou abrir uma página,
utilizando-se do navegador que acompanha o Android. O código mostrado a seguir
apresenta corretamente um exemplo de utilização desse componente.
Uri uri = Uri.parse("http://www.cespe.unb.br");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
Diego Carvalho, Pedro Henrique Chagas Freitas
Aula 07
Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
Curso Regular de Desenvolvimento de Software
www.estrategiaconcursos.com.br
54
59
6. (CESPE – 2013 – FUB – Analista de Sistemas) O Android pode ser executado sobre
qualquer sistema operacional, pois os aplicativos Android são escritos na linguagem
de programação Java e executados em uma máquina virtual Java.
7. (IBFC – 2013 – PC – Analista de Sistemas) É uma plataforma de software que está
revolucionando o mercado global de aplicativos para celulares. É a primeira
plataforma de aplicativos para telefones celulares de código aberto que se fez notar
pelos maiores mercados mundiais de telefonia celular. Estamos falando do:
a) Unix.
b) Linux.
c) Android.
d) Mac OS X.
e) Windows.
8. (CESPE – 2014 – ANATEL – Analista de Sistemas) A arquitetura do Android
disponibiliza o módulo denominado OOM handling, que permite às aplicações o
gerenciamento do mecanismo de baixo consumo de energia do aparelho; por
exemplo, se um processo necessitar ser executado em segundo plano, o referido
módulo possibilitará a desativação temporária desse mecanismo até a finalização do
processo em execução.
9. (FCC – 2011 – TRE/PE – Analista de Sistemas) A versão do Android feita, a princípio,
apenas para tablets, que apresenta melhorias nos recursos multitarefa e nos widgets,
é considerada como:
a) Cupcake
b) Frozen Yogurt
c) Gingerbread.
d) Honeycomb.
e) Ice Cream.
Diego Carvalho, Pedro Henrique Chagas Freitas
Aula 07
Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
Curso Regular de Desenvolvimento de Software
www.estrategiaconcursos.com.br
55
59
10. (CESPE – 2013 – SERPRO – Analista de Sistemas) Em uma aplicação desenvolvida
para Android, os serviços que forem executados em background serão
implementados como componentes do tipo service e permanecerão em execução
até que a aplicação que os instanciar seja encerrada.
11. (QUADRIX – 2013 – CREFONO – Analista de Sistemas) Como o software Android, da
empresa Google, pode ser classificado?
a) Um aplicativo para celulares.
b) Um aplicativo para celulares e tablets.
c) Um sistema operacional para celulares e tablets.
d) Um hardware para celulares e tablets.
e) Um tipo de celular.
12. (FUMARC – 2014 – AL/MG – Analista de Sistemas) Em relação aos principais
componentes de um aplicativo Android, analise os itens a seguir, marcando com (V)
a assertiva verdadeira e com (F) a assertiva falsa.
( ) Uma “atividade” do Android é tanto uma unidade de interação do usuário quanto
uma unidade de execução.
( ) Um programa Android interativo é iniciado pela criação de subclasses da classe
Activity.
( ) A classe ContentProvider do Android é utilizada em tarefas de segundo plano, que
podem estar ativas, mas não visíveis na tela.
( ) A classe Service do Android possui o quarteto de atividades básicas para inserção,
consulta, atualização e exclusão.
A sequência CORRETA, de cima para baixo, é:
a) V, F, F, V.
b) F, V, F, V.
c) F, V, V, F.
d) V, V, F, F.
Diego Carvalho, Pedro Henrique Chagas Freitas
Aula 07
Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
Curso Regular de Desenvolvimento de Software
www.estrategiaconcursos.com.br
56
59
13. (CESPE – 2014 – ANATEL – Analista de Sistemas) O sistema operacional Android tem
o Linux como base, o que permite a utilização simultânea de aplicações que podem
ser executadas em segundo plano, de forma transparente para o usuário.
14. (CESPE – 2017 – TRE/BA - Analista de Sistemas) Ao criar um novo projeto padrão por
meio do Android Studio, o programador poderá desenvolver sua APP para diversos
dispositivos. Nesse sentido, com o objetivo de criar um jogo para smartphones, os
arquivos de som deverão ser armazenados dentro da estrutura padrão do diretório:
a) manifest.
b) layout.
c) menu.
d) res.
e) Java.
LISTA DE EXERCÍCIOS COMENTADOS (DIVERSAS BANCAS)
iOS
1. (CESPE – 2012 – DPF – Analista de Sistemas) A arquitetura do iOS possui quatro
camadas (layers) que funcionam como interface entre a aplicação e o hardware. Essas
camadas, listadas da mais baixa para a mais alta, são: Core OS, Core Services, Media
e CoCoa Touch.
2. (CESPE – 2013 – SERPRO – Analista de Sistemas) Como o iOS não implementa um
sistema de garbage collection, o Objective-C mantém um contador de referência
para os objetos de forma a viabilizar a liberação de memória de tal objeto.
Diego Carvalho, Pedro Henrique Chagas Freitas
Aula 07
Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
Curso Regular de Desenvolvimento de Software
www.estrategiaconcursos.com.br
57
59
3. (FUMARC – 2014 – AL/MG – Analista de Sistemas) Analise as seguintes afirmativas
sobre fundamentos para desenvolvimento de aplicações móveis para iOS.
I. Xcode é o ambiente nativo da Apple para desenvolvimento de aplicativos para iOS.
II. Objective-C é a linguagem de desenvolvimento de aplicativos para iOS.
III. A classe NSObject é a classe raiz dasprincipais hierarquias de classes em
Objective-C.
Estão CORRETAS as afirmativas:
a) I, II e III.
b) I e II, apenas.
c) I e III, apenas.
d) II e III, apenas.
4. (CESPE – 2014 – SUFRAMA – Analista de Sistemas) Para que os programas aplicativos
sejam executados no Android e no iOS, é necessário uma máquina virtual própria,
cujas responsabilidades são, entre outras, gerenciar a comunicação entre o aplicativo
e as bibliotecas nativas, prover segurança e permitir que os aplicativos possam gravar
dados privados, incluindo bancos de dados. No Android 4.3, a máquina virtual é a
Dalvik; no iOS 7, é a XCode.
5. (CESPE – 2014 – SUFRAMA – Analista de Sistemas) No iOS 7, os frameworks são
diretórios que contêm biblioteca compartilhada dinâmica com recursos como
arquivos de cabeçalho, imagens e aplicativos auxiliares a serem utilizados no
desenvolvimento dos aplicativos.
6. (CESPE – 2014 – SUFRAMA – Analista de Sistemas) O iOS 7 possui as camadas Cocoa
Touch, Media, Core Services e Core OS; esta última, que é a camada mais baixa,
suporta aplicativos desenvolvidos em 64 bits no modelo LP64.
Diego Carvalho, Pedro Henrique Chagas Freitas
Aula 07
Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
Curso Regular de Desenvolvimento de Software
www.estrategiaconcursos.com.br
58
59
7. (CESPE – 2017 – TRE/BA - Analista de Sistemas) Na linguagem Swift do IOS, ao se
declarar o código var fruta=[“maça“, “banana“, “abacaxi“], a linguagem
automaticamente entenderá que fruta é array de:
a) integer.
b) floatings.
c) strings.
d) imutáveis.
e) double.
Diego Carvalho, Pedro Henrique Chagas Freitas
Aula 07
Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118
Curso Regular de Desenvolvimento de Software
www.estrategiaconcursos.com.br
59
59
GABARITO
GABARITO DOS EXERCÍCIOS COMENTADOS (DIVERSAS BANCAS)
SISTEMAS MÓVEIS
1 2 3 4 5 6 7 8 9 10
C C B A
GABARITO DOS EXERCÍCIOS COMENTADOS (DIVERSAS BANCAS)
ANDROID
1 2 3 4 5 6 7 8 9 10
E E C E C E C E D E
11 12 13 14 15 16 17 18 19 20
C D C D
GABARITO DOS EXERCÍCIOS COMENTADOS (DIVERSAS BANCAS)
iOS
1 2 3 4 5 6 7 8 9 10
C C A E C C C
Diego Carvalho, Pedro Henrique Chagas Freitas
Aula 07
Desenvolvimento de Sistemas p/ Polícia Federal (Perito - Área 3 - Tecnologia da Informação) - 2020
www.estrategiaconcursos.com.br
1265118