Baixe o app para aproveitar ainda mais
Prévia do material em texto
Introdução ao desenvolvimento para dispositivos móveis 1. Para que um dispositivo seja considerado móvel, ele deve ter uma série de características, como a capacidade de operar de forma fácil e eficaz, as funcionalidades disponíveis nele, as opções flexíveis de conexão e troca dados e a funcionalidade de se deslocar junto do usuário. Das opções disponíveis, indique a que representa um dispositivo móvel. Você acertou! D. Smartphone. Smartphone é um dispositivo móvel dos mais utilizados na atualidade, sendo que a principal característica que o diferencia das demais opções é a capacidade de mobilidade. Televisor smart, refrigerador inteligente, computador do tipo PC e impressora WiFi, são dispositivos com muitas características similares às do smartphone, tendo, inclusive, muitas funcionalidades idênticas, como conectividade e possibilidade de execução de aplicativos (visto que muitos incorporam o mesmo sistema operacional com versões direcionadas a esses tipos de dispositivos), porém não têm a funcionalidade de mobilidade o que os descaracterizam como dispositivos móveis. 2. O sistema operacional dos dispositivos móveis é um componente fundamental. Cada sistema operacional tem suas funcionalidades e características, sendo que essas diferenças influenciam o dispositivo em diversos sentidos, como usabilidade e disponibilidade de recursos. Indique qual das opções representa um sistema operacional móvel, ainda em uso na atualidade. Você acertou! A. iOS. O iOS é um sistema operacional desenvolvido pela Apple para integrar seus dispositivos móveis. Symbian OS e o Windows Phone são sistemas operacionais desenvolvidos pela Nokia e pela Microsoft, respectivamente, mas foram descontinuados pelos seus fabricantes. Ubuntu Server é um sistema operacional voltado a utilização em servidores, já o Windows 98 é um sistema operacional voltado a computadores do tipo PC, porém chegou a ser utilizado em laptops, mas já não é mais comercializado pela sua fabricante, a Microsoft. 3. Segundo Lee, Schneider e Schell (2005), uma das características mais importantes de um dispositivo móvel é a usabilidade, que se caracteriza pela capacidade de ser utilizado por diversos usuários, em diversos ambientes. Essa usabilidade pode ser afetada por diversas características, seja dos usuários, do ambiente ou do próprio dispositivo. Qual opção indica uma característica relacionada ao usuário? Você acertou! D. Tamanho e força. O tamanho e a força de um usuário podem afetar a usabilidade do dispositivo, visto que um usuário adulto pode facilmente carregar um notebook, mas este pode ser pesado demais para um usuário com uma idade menor. Condições de tempo afetam a usabilidade dos dispositivos móveis, mas são relacionadas ao seu ambiente de utilização. Já o tempo de inicialização, a tela sensível ao toque e a resistência a impactos são características relacionadas ao dispositivo, que, por sua vez, afetam a usabilidade também. 4. A fragmentação de um sistema operacional se caracteriza pela distribuição da utilização de diversas versões desse sistema, sendo a maioria dessas versões já defasadas. Indique qual das opções representa um benefício da fragmentação de um sistema operacional móvel. Você acertou! E. Maior vida útil do dispositivo. Maior vida útil do dispositivo é uma das principais características da fragmentação dos sistemas operacionais, visto que as atualizações disponibilizadas pelos fabricantes são pontuais para resolver problemas nos dispositivos, mantendo sua usabilidade adequada. Sistema desatualizado e segurança comprometida também são características dos sistemas operacionais fragmentados, mas não são benefícios, pelo contrário, são aspectos negativos. Atualizações constantes são características de sistemas pouco fragmentados, assim como a possibilidade de apresentar lentidão após a atualização. 5. O mercado de dispositivos móveis não é novo, mas cresce muito a cada ano com uma concorrência acirrada, seja entre os fabricantes de dispositivos móveis ou entre os fabricantes de sistemas operacionais. Dentre as opções a seguir, indique a que apresenta um benefício gerado pela concorrência. Você acertou! D. Rápido ciclo de inovação. Rápido ciclo de inovação é um dos grandes benefícios gerados pela concorrência, dessa forma, cada vez mais surgem dispositivos com melhores recursos disponíveis, para solucionar as mais diversas necessidades. Alta dos preços só ocorre em situações em que não existem concorrentes em um nicho. Novas oportunidades para os desenvolvedores surgem a cada dia, em virtude da ferrenha concorrência em que cada empresa quer lançar primeiro o aplicativo inovador. Dispositivos e aplicações são cada vez mais inovadoras, visto que ao se manterem conservadoras perdem mercado, sendo este sedento por novidades que os concorrentes tentam suprir. Projeto de software para dispositivos móveis 1. Para desenvolver softwares móveis de qualidade, deve-se analisar os diferentes contextos da aplicação, suas interações, sua usabilidade, a privacidade e a segurança. Para isso, testes devem ser realizados, como, por exemplo, o funcional, que busca conferir: Você acertou! B. a implementação e o funcionamento de todos os requisitos, que devem corresponder ao esperado. O teste funcional visa certificar que todos os requisitos foram implementados e funcionam da maneira que deveriam. Para eliminar lentidão, teste de desempenho deve ser realizado. Para verificar a experiência do usuário, testes de usabilidades devem ser feitos. Testes de mobilidade e compatibilidade visam garantir que os aplicativos se conectem a diferentes redes e interajam com diferentes hardwares. 2. O desenvolvimento de softwares móveis apresenta peculiaridades em relação a softwares desktops, por exemplo. Qual das dificuldades técnicas no desenvolvimento não compreende o desenvolvimento móvel? Você acertou! D. Ciclos de desenvolvimento longos. No desenvolvimento de software móveis, os ciclos de desenvolvimento tendem a ser curtos. 3. No projeto de desenvolvimento de softwares móveis, uma das atividades importantes é projetar as interfaces. Os projetos de interfaces podem ser feitos à mão ou com ferramentas de software. Para um protótipo de tela com alta fidedignidade, uma ferramenta indicada é: Você acertou! A. Figma. O Figma é uma ferramenta online e colaborativa para desenvolvimento de protótipos de alta fidedignidade. 4. Existem várias regras para o desenvolvimento de aplicativos móveis e de aplicativos em determinadas plataformas como iOS e Android. Essa variedade, às vezes, dificulta a publicação do seu software em uma Store. É uma boa prática no desenvolvimento: Você acertou! E. serem os rótulos de widget de fácil reconhecimento e de tamanho adequado. Os rótulos devem ser limpos e coerentes: os rótulos de widget devem ser de fácil reconhecimento e de tamanho adequado. Evite rótulos com textos grandes e use abreviações com cautela. 5. O projeto de desenvolvimento de software pode ser descrito em seis fases: formulação, planejamento, análise, engenharia, implementações e testes e, por fim, avaliação do usuário. A fase de engenharia envolve: Você acertou! E. analisar o projeto de interface, de arquitetura, navegação e conteúdo. As seis fases descritas são as seguintes: Formulação: envolve projeto arquitetural, projeto de navegação; as metas, os recursos e as funções do aplicativo móvel. Planejamento: visa elucidar os custos envolvidos e os riscos que o projeto possui. Análise: visa à especificação dos requisitos do software móvel e dos conteúdos necessários. A fase de engenharia: envolve a análise do projeto de interface, de arquitetura, navegação e conteúdo. A fase de implementação e testes: realizam-se a codificação e testes. Por fim, a avaliação do usuário, que visa garantir a usabilidade e a acessibilidade. Design de interação para aplicações móveis 1. Google e Apple disponibilizam guias de recomendaçõespara os desenvolvedores de aplicativos nessas plataformas. Essas diretrizes, ou guidelines, servem como referência para o design de aplicativos. Sobre as diretrizes de guidelines das plataformas Android e iOS, analise as afirmações a seguir: I. Segundo o guia do desenvolvedor Android, os usuários de aplicativos desta plataforma têm uma expectativa alta em relação à aparência e ao comportamento. Por isso, é necessário que os desenvolvedores sigam somente as diretrizes relacionadas aos padrões visuais e de navegação. II. No guia de desenvolvimento do iOS, um designer de aplicativo tem a possibilidade de oferecer um produto extraordinário, que estará no topo dos gráficos da App Store, mas, para isso, é preciso atender às altas expectativas de qualidade e funcionalidade. III. Para a Apple, três temas principais diferenciam a plataforma iOS de outras: clareza, deferência e profundidade. É correto apenas o que se afirma em: Você acertou! C. II e III. Segundo o guia do desenvolvedor Android, os usuários de aplicativos desta plataforma têm uma expectativa alta em relação à aparência e ao comportamento. Por isso, é necessário que os desenvolvedores sigam não somente as diretrizes relacionadas aos padrões visuais e de navegação, mas também as de qualidade para compatibilidade, desempenho, segurança e outros. Isso torna a afirmação I incorreta. No guia de desenvolvimento do iOS está escrito que, como designer de aplicativo, você tem a possibilidade de oferecer um produto extraordinário, que estará no topo dos gráficos da App Store, mas, para isso, é preciso atender às altas expectativas de qualidade e funcionalidade, o que torna a afirmação II correta. Para a Apple, três temas principais diferenciam a plataforma iOS de outras: clareza (em todo o sistema, o texto é legível em todos os tamanhos, os ícones são precisos e lúcidos, os adornos são sutis e apropriados); deferência (movimento fluido e uma interface nítida e bonita ajudam as pessoas a entenderem e a interagirem com o conteúdo sem nunca competirem com ele); e profundidade (camadas visuais distintas e movimento realista transmitem hierarquia e vitalidade e facilitam a compreensão). Portanto, a afirmação III também é correta. 2. Segundo o próprio guia do desenvolvedor Android, os usuários de aplicativos nessa plataforma têm uma expectativa alta em relação à aparência e ao comportamento. Para isso, é necessário que os desenvolvedores sigam as diretrizes do guia. Assinale a alternativa que cita alguns exemplos dessas diretrizes. Você acertou! D. Usabilidade, animação e layout. Nos guias de desenvolvedores, as diretrizes citadas estão relacionadas a conceitos de usabilidade, animação, layout, padrão, estilo e componentes. Outras questões como economia, performance e integração, apesar de serem itens a considerar em um projeto de desenvolvimento, não fazem parte das diretrizes citadas nos guias. 3. No guia de desenvolvimento do iOS, está escrito que, como designer de aplicativo, você tem a possibilidade de oferecer um produto extraordinário que estará no topo dos gráficos da App Store. Para isso, é preciso atender às altas expectativas de qualidade e funcionalidade. Para a Apple, três temas principais diferenciam a plataforma iOS de outras. Assinale a alternativa correta sobre os três temas. Você acertou! A. Clareza, deferência e profundidade. No guia de padrões para a interface de usuário disponibilizado pela Apple, são classificadas as diretrizes de padrões em três temas: clareza, deferência e profundidade. Os demais itens como layout, desempenho e animação, apesar de citados e envolvidos nos padrões de interface de usuário, não são classificados como temas. 4. Um dos temas abordados pela Apple é o conceito de profundidade. Sobre esse conceito, assinale a alternativa que está correta de acordo com o descrito no guia da Apple. Você acertou! D. São camadas visuais distintas que transmitem vitalidade e facilitam a compreensão. É um conceito adotado há mais tempo pela Apple, estando diretamente ligado a facilitar a compreensão dos usuário e transmitir vitalidade. Esse conceito não tem relação com outros pontos, como o tamanho em 3D dos widgets, por exemplo ou com o alcance da execução de um comando. 5. Segundo o guia do desenvolvedor Android, para fornecer aos usuários uma experiência mais familiar, é necessário usar os padrões mais comuns do guia. Assinale a alternativa correta sobre um dos padrões do guia. Você acertou! E. Mostrar e ocultar a navegação do seu aplicativo com a gaveta de navegação. Os padrões mais comuns citados no guia são ações relacionadas com: permitir a ação principal da sua interface com um botão de ação flutuante; mostrar a sua marca, navegação, pesquisa e outras ações com a barra de aplicativos; e mostrar e ocultar a navegação do seu aplicativo com a gaveta de navegação. Outros padrões, apesar de adotados em comunidades de desenvolvedores, como o reaproveitamento de bibliotecas e de código, não estão como os padrões comuns do guia. Publicando aplicações para Android e iOS 1. Existem normas e regras que regulamentam a publicação de aplicativos na Apple App Store e na Google Play Store. Sobre essas normas, é correto afirmar que: Você acertou! C. as normas são baseadas em princípios próprios de cada companhia, além da legislação local de onde o aplicativo será distribuído. As normas são baseadas em princípios próprios de cada companhia que administra as app stores. Contudo, também sofrem influência da legislação local de cada país onde o aplicativo será distribuído. A legislação dos Estados Unidos da América pode até servir de base para a elaboração do documento em alguns aspectos, mas não é fator definitivo; o mesmo acontece com os princípios de direitos humanos. 2. A publicação de aplicativos na Google Play Store e Apple App Store é regulada por diretrizes e normativas que visam tanto a questões de segurança como de experiência do usuário. Considerando as normativas da Google Play e da Apple App Store, é correto afirmar que: Você acertou! B. a Apple mantém uma política rígida de análise de desempenho de aplicações. A Apple mantém uma política de controle rígida sobre desempenho e estabilidade, realizando testes em cada aplicação submetida; a não conformidade resulta em rejeição da publicação do app. Para a Google, esse não é fator preponderante para a aceitação de aplicativos. 3. Publicar uma aplicação nas lojas de aplicativos oficiais significa, necessariamente, estar em conformidade com as diretrizes de cada companhia. A esse respeito, é correto afirmar que: Você acertou! D. ambas as app stores apresentam normas explícitas que regulamentam o acesso a dados e o uso que se dará aos dados coletados. É explícito nas políticas de ambas as app stores oficiais que os recursos devem ser solicitados dentro dos critérios da razoabilidade; ou seja, que sejam necessários para o bom funcionamento da aplicação. Os dados coletados e a destinação deles devem ser deixados claros ao usuário na política de privacidade do aplicativo. Nos casos de jurisdições que apresentem leis específicas sobre o assunto, como o caso da União Europeia, tais leis são consideradas e devem ser seguidas caso o aplicativo seja disponibilizado nesses locais. 4. Existem alguns requisitos que os desenvolvedores devem cumprir antes da publicação nas lojas de aplicativos. Sobre esses requisitos, é correto afirmar que: Você acertou! A. ambas as plataformas exigem conta de desenvolvedor paga e assinatura de contrato digital. Google e Apple exigem criação de conta de desenvolvedor paga e concordância com um contrato digital. Contudo, a assinatura da Google é paga apenas uma vez no momento da realização do cadastro; enquanto na Apple o valor é cobrado anualmente. Além disso, não há cobrança por publicação de aplicativos. 5. O Ionic é um framework de desenvolvimento multiplataforma. Em resumo, a aplicação desenvolvida com o Ionic podeser executada em Android e em iOS. Sobre a geração do arquivo para publicação, é correto afirmar que: Você acertou! C. o Ionic gera o executável do Android via linha de comando e prepara o projeto do iOS que deve ser compilado via Xcode. Apesar do desenvolvimento via Ionic ser realizado por ferramentas de desenvolvimento web, é necessário compilar os aplicativos para os formatos originais de cada plataforma: iOS e Android. No caso do Android, tendo o SDK instalado na máquina, o próprio Ionic realiza a compilação e gera o arquivo publicável, não sendo necessária a utilização do Android Studio. Já no caso do iOS, o produto gerado pelo Ionic é um projeto Xcode; e a compilação para a plataforma da Apple é realizada pelo Xcode e não pelo Ionic. WebApps 1. WebApps estão no mercado mobile para preencher uma lacuna deixada pelos aplicativos nativos de dispositivos móveis no que diz respeito à portabilidade e à facilidade de desenvolvimento. Sobre WebApps, site responsivo e aplicativos nativos, assinale a alternativa correta: Você acertou! E. WebApps são aplicativos que são disponíveis off-line e interagem com componentes nativos dos dispositivos. WebApps são aplicativos que ficam disponíveis off-line e interagem com componentes nativos dos dispositivos. Aplicativos nativos são acessíveis apenas no sistema operacional para o qual foram desenvolvidos (por exemplo, no Android). Além disso, não são acessíveis em navegador. Sites responsivos não são a mesma coisa que os WebApps, sendo que estes têm características particulares. Por exemplo, os WebApps são acessíveis off-line, e os sites responsivos não. 2. Um recurso que pode ser adicionado ao seu aplicativo web é push notification. Esse tipo de notificação está disponível na maioria dos aplicativos comerciais. Sobre essas notificações, assinale a alternativa correta: Você acertou! E. Um exemplo de push notification são notificações de chegada de mensagens. Push notification são mensagens que o usuário do aplicativo recebe sem que ele tenha feito nenhuma ação para isso. As mensagens de confirmação e cancelamento são exemplos de alert,e não de push notification. Atualmente, é possível adicionar push notification aos PWAs; não é preciso utilizar nenhum tipo de emulador. As push notifications estão disponíveis em todos os sistemas operacionais. Um exemplo de push notification são notificações de chegada de mensagens, porque elas chegam sem o usuário programá-las, são exibidas na tela de bloqueio e, quando clica nelas, é direcionado para o aplicativo de origem. 3. Um site responsivo já construído pode ser utilizado como porta de entrada para o desenvolvimento de um WebApp. Para isso, algumas ações precisam ser tomadas. Sobre essas ações, assinale a alternativa correta: Você acertou! C. O icone que será utilizado pelo aplicativo é informado no arquivo manifest.json. O que precisa ser inserido no index da aplicação é uma referência ao arquivo service worker.Além disso, o arquivo utilizado para, antes de fazer um request, buscar as informações no cache, para que seja feito um request apenas quando não existe no cache, também é o service worker. Já o arquivo manifest.json é usado para configurações iniciais do aplicativo como, por exemplo, a definição do ícone do aplicativo e a permissão para que o aplicativo seja instalado e, consequentemente, com a exibição de uma mensagem pra isso. Esse arquivo não tem relação com a possibilidade de disponibilização do aplicativo no Google Play. 4. Um WebApp também pode ser chamado de PWA. Porém, para ser considerado um PWA, o site precisa ter algumas características bem específicas. Sobre elas, assinale a alternativa correta: Resposta correta. C. Reenvolvente: facilita o reengajamento com recursos nativos do dispositivo como, por exemplo, notificações push. As principais características de um PWA são: Progressivo: deve funcionar para qualquer navegador. Responsivo: deve ser adaptável a qualquer computador desktop, celular e tablet, independente do tamanho de tela. Seguro: deve utilizar o protocolo HTTPS para evitar invasões e garantir que o conteúdo não seja adulterado. Reenvolvente: facilita o reengajamento com recursos como notificações push. Linkável: deve permitir compartilhamento por URL; não requer instalação complexa. 5. Uma das principais características de um PWA é estar sempre disponível mesmo off- line; para que isso seja possível, é necessário efetuar a programação de um componente específico no seu PWA, chamado de Service Worker. Assinale a alternativa que contém a descrição correta de alguma característica desse componente: Projeto de software WebApps 1. Uma característica essencial de uma aplicação web é seu dinamismo. As necessidades de uma aplicação web podem mudar em pouquíssimo tempo, levando à necessidade de projetos que tomem cada vez menos tempo e aplicações cada vez mais adaptáveis às necessidades atuais de seus usuários. Sendo assim, qual das opções abaixo representa a melhor decisão ao se iniciar um projeto de WebApp? Você acertou! B. Adaptar modelos tradicionais, realizando todas as etapas previstas no processo de desenvolvimento, e, sempre que possível, realizar atividades em paralelo. A coleta de requisitos deve ser a primeira atividade a ser realizada. Somente após, as demais podem iniciar, e em aplicações web a modelagem dos requisitos é uma das atividades mais importantes. Saiba que não se deve suprimir etapas do processo de desenvolvimento. Qualquer modelo tradicional pode ser adaptado, não somente os modelos ágeis e desde que seus objetivos sejam modificados para os objetivos de um projeto de WebApp. 2. A entrada de um usuário em um WebApp pode ocorrer a partir de diversas origens, sendo um dos maiores desafios em projetos de WebApp. Em qual das atividades a seguir esse tipo de problema deve ser tratado? Você acertou! D. Projeto de interface. Em um projeto de WebApp, cada etapa tem suas responsabilidades. Veja que o projeto de arquitetura preocupa-se com a forma como os componentes serão organizados internamente. Na etapa projeto de componentes, a preocupação está na definição de quais serão e o que fará cada um dos componentes do WebApp. No projeto de navegação, é determinado como será o fluxo de transição entre os componentes, seja do ponto de vista do usuário, seja dos componentes. No projeto de conteúdo, a preocupação maior está no que será inserido em cada componente, e como serão apresentados. Por fim, no projeto de interface, é definido como tudo será apresentado para o usuário, daí a preocupação em saber de onde este vem, pois, dependendo da origem de entrada do usuário, a forma de apresentação do WebApp deverá ser diferente. 3. Um projeto de arquitetura permite definir quais serão as regras de navegação em um WebApp, ou seja, por quais caminhos o usuário poderá seguir uma vez que estiver dentro da aplicação web. O modelo de arquitetura que permite o agrupamento de dois ou mais objetos por categoria e que é altamente aplicado em modelos de e-commerce é conhecido como: Você acertou! E. modelo em grade. Dos modelos de arquitetura existentes, perceba que o linear é utilizado para determinar um fluxo pré-definido, ótimo em casos de tutoriais, quando se deseja direcionar o usuário. Semelhante a esse modelo, você pode considerar o linear de fluxo alternativo, quando o usuário pode optar por seguir por outros caminhos, e o com desvio de fluxo, que, de acordo com a interação com o usuário, direciona-o por determinados caminhos. Em um modelo de estrela, a navegação é aberta, o usuário pode seguir de qualquer ponto para qualquer outro ponto, o que pode causar confusão. Existe também o modelo hierárquico, nele o usuário pode descer por uma hierarquia de componentes, podendo sempre que necessário subir na hierarquia ou visitar os componentes que estão no mesmo nível ou níveis inferiores do ramo hierárquico que decidiu seguir. Entretanto, o mais aplicadoem e-commerces, devido principalmente ao fato de permitir o agrupamento de componentes, é o modelo em grade. O modelo em grade permite que componentes "semelhantes" ou "de um mesmo grupo" sejam organizados em conjuntos. 4. Todo projeto de WebApp deve levar em consideração alguns requisitos que, mesmo não especificados pelo usuário, são necessários. O principal grupo de requisitos a ser observado em um projeto de WebApp são os requisitos de qualidade, que devem estar presentes em qualquer projeto. Assim sendo, a descrição a seguir é referente a qual requisito de qualidade? “Capacidade de busca e recuperação de dados, facilidade de navegação e leitura das informações, características relacionadas ao domínio da aplicação, etc.” Você acertou! A. Funcionalidade. O requisito usabilidade trata da facilidade da compreensão geral do site, feedback on-line, recursos de ajuda, etc. Já o requisito funcionalidade tem a capacidade de busca e recuperação, leitura das caraterísticas de navegação. Enquanto o requisito confiabilidade é para o correto processamento dos links, recuperação de erros, validação e recuperação dos dados de formulários, etc. Ao passo que o requisito eficiência está relacionado à velocidade de carregamento das páginas, o tempo de resposta, velocidade de geração das imagens, etc. Por fim, o requisito facilidade de manutenção, o site deve ser extensível, adaptável e fácil de corrigir. 5. O desenvolvimento de um projeto de WebApp deve atender a uma série de objetivos que, muitas vezes, não são especificados pelo usuário durante o processo de coleta de requisitos, mas que são observados em inúmeros projetos web, uma vez que, quando não aplicados, elevam as chances de fracasso do projeto. Observe a afirmação a seguir e responda a qual objetivo se refere: “O usuário espera que o conteúdo seja relevante às suas expectativas. A falta ou insuficiência de elementos pode levar ao fracasso do WebApp”. Você acertou! E. Robustez. O objetivo simplicidade diz que a aplicação deve fazer uso moderado de seus recursos. O objetivo consistência: o conteúdo deve ser construído com consistência, o designer gráfico deve ser semelhante em todas as partes, etc. Identidade: design e apresentação gráfica devem ser coerentes como domínio da aplicação para a qual está sendo desenvolvida. Robustez: trata-se de entender o que o usuário espera do conteúdo, ou seja, que o conteúdo seja relevante às suas necessidades. Navegabilidade: a navegação deve ser projetada para ser intuitiva e previsível. Apelo visual: o indicado é o equilíbrio entre os componentes. Compatibilidade: uma aplicação web deve ser utilizada em uma variedade de ambientes e deve ser projetada para executar perfeitamente em cada um deles. Plataformas de desenvolvimento: IDE e emulador Android 1. Na atualidade, um desenvolvedor de software tem disponível para utilização uma grande variedade de linguagens de programação e cada uma tem suas características. Em dispositivos móveis, as plataformas de desenvolvimento normalmente utilizam uma linguagem de programação como linguagem nativa. Considerando o sistema operacional Android, qual é a sua linguagem de programação nativa? Você acertou! E. Java Java é a linguagem de programação nativa da plataforma Android. Swift é a linguagem nativa da plataforma iOS concorrente do Android. C#, Delphi e Html são linguagens de programação de IDEs que também possibilitam o desenvolvimento de aplicativos para Android, porém não são nativas da plataforma. 2. Uma IDE poderosa ajuda o desenvolvedor de software na confecção do aplicativo, gerenciando-o, organizando a estrutura do projeto e automatizando processos nos quais o usuário, sem a ajuda dela, teria de realizar manualmente. Dentre as plataformas a seguir, qual é a plataforma indicada pela Android para desenvolver aplicativos? Você acertou! C. Android Studio Android Studio é a IDE indicada e mantida pela Android para desenvolvimento de aplicativos para a sua plataforma. Visual Studio, NetBeans, Eclipse e RAD Studio são IDEs que têm a possibilidade de desenvolver aplicativos para a plataforma Android, mas não são reconhecidas pela Android como uma plataforma indicada para esse fim. 3. Em um ecossistema de dispositivos muito variados (variação está relacionada aos recursos ou até mesmo as suas características físicas, como tamanho e formas de interação), é complexo prever em que tipo de dispositivo um determinado aplicativo será executado. Ter diversos dispositivos reais para realização de testes pode não ser uma opção viável, logo a emulação é uma opção muito utilizada. O Android disponibiliza em seu SDK um emulador oficial. Selecione a opção que representa essa ferramenta: Você acertou! B. Android Emulator Android Emulator é o emulador disponibilizado pela Android no SDK da plataforma. BlueStacks, Android X84 e GenyMotion são emuladores do Android desenvolvidos por terceiros, já o Virtual Box é uma ferramenta de virtualização, na qual é possível executar os mais diversos sistemas operacionais. 4. Para identificar problemas em um código-fonte, as IDEs disponibilizam funcionalidades para ajudar o desenvolvedor a encontrar tais falhas. Existem recursos em que o aplicativo para o seu fluxo de execução em um determinado local e disponibiliza ao usuário diversas funcionalidades, para que ele possa identificar possíveis problemas na execução. Qual das opções a seguir representa a funcionalidade descrita? Você acertou! E. Break points Ao inserir um break point em um determinado ponto do código de um aplicativo, durante uma execução do aplicativo, é possível realizar a verificação de várias coisas relacionadas ao aplicativo, como por exemplo o valor armazenado em cada uma das variáveis declarada. Verificador de sintaxe analisa erros de escrita do código-fonte. Os repositórios de versionamento possibilitam que equipes numerosas trabalhem em um mesmo projeto sem que ocorra perda de dados. Plugins dão versatilidade a uma IDE, e funcionalidades e recursos desenvolvidos por terceiros são disponibilizados através deles. A renderização de layouts permite ao desenvolvedor visualizar como o layout está ficando. 5. Recursos, em um dispositivo móvel, devem ser consumidos de forma responsável por um aplicativo. Se um determinado aplicativo consumir recursos de memória e processamento de um dispositivo de forma desmoderada pode comprometer o bom funcionamento dele, frustrando o usuário frente à utilização do aplicativo e levando-o a buscar outra ferramenta que atenda as suas necessidades. Indique qual opção a seguir é uma ferramenta que auxilia o desenvolvedor a evitar situações como a descrita anteriormente. Você acertou! A. Monitor de recursos Monitor de recursos ajuda ao desenvolvedor a analisar a quantidade de recursos que o aplicativo está utilizando em cada estágio de sua execução. Gradle é uma ferramenta de automatização da compilação dos arquivos finais do aplicativo. Dispositivos reais e emuladores são formas de testar a aplicação, mas o desenvolvedor não tem noção se o aplicativo está ou não consumindo os recursos de forma adequada. Boas praticas de programação são sempre bem-vindas, mas um aplicativo pode ter boas práticas e assim tender a não apresentar os problemas citados, mas isso só será aferido com o uso do monitor de recursos. Componentes dos aplicativos Android 1. O Android utiliza como base o sistema operacional Linux, no qual cada processo é encapsulado em sua própria máquina virtual o isolado dos demais. Por meio dessas e de outras características, o Android implementa um princípio relacionado à segurança do aplicativo. Indique qual opção representa esse princípio: Você acertou! C. Privilégio mínimo O Android parte do princípio do privilégio mínimo, uma vez que todas as permissões devem ser concedidas. VM isolada, ID único do aplicativo e liberar memória são informações relacionadas a características de como os aplicativos são executados.Privilégio total somente existe se o desenvolvedor do aplicativo assim implementar e o usuário assim permitir. Dessa forma, não se caracteriza como um princípio. 2. Os aplicativos do Android são construídos utilizando componentes bem definidos. O componente de aplicativo do Android que fornece uma tela com a qual os usuários podem interagir para fazer algo, como discar um número no telefone, enviar um e-mail ou ver um mapa é: Você acertou! A. Activity Activity é o componente que disponibiliza a interface ou tela para o usuário. Services são processos realizados em background e muitas vezes os usuários nem sabem da sua existência. Broadcast receiver são componentes que trabalham recebendo e tratando os eventos do dispositivo. Intent são objetos de comunicação entre os vários componentes de um aplicativo e também dos componentes com o sistema Android. Content provider implementa o acesso aos dados tanto do sistema quanto dados do próprio aplicativo. 3. Os componentes presentes em um aplicativo Android são capazes de realizar diversas funções diferentes, como acessar dados, propagar informações para o sistema e também exibir leiautes. Com relação aos componentes Android, qual deles possui a funcionalidade de enviar dados ao sistema Android, solicitando que ele execute um determinado aplicativo enviando-o um conjunto de dados? Você acertou! D. Intent Intent são objetos de comunicação entre os vários componentes de um aplicativo e também dos componentes com o sistema Android. Activity é o componente que disponibiliza a interface ou tela para o usuário. Services são processos realizados em background e, muitas vezes, os usuários nem sabem da sua existência. Broadcast receiver são componentes que trabalham recebendo e tratando os eventos do dispositivo. Content provider implementa o acesso aos dados tanto do sistema quanto dados do próprio aplicativo. 4. Muitos processos de longa duração executados pelos aplicativos Android, se executados pelo componente inadequado, podem causar problemas ao aplicativo e ao sistema em si, travando-o e causando dificuldades aos usuários. Qual é o componente adequado à execução de processos de longa duração? Você acertou! E. Service Services são processos realizados em background e, muitas vezes, os usuários nem sabem da sua existência, dada esta característica são amplamente utilizada para a execução de funcionalidades de longa duração. Intent são objetos de comunicação entre os vários componentes de um aplicativo e também dos componentes com o sistema Android. Activity é o componente que disponibiliza a interface ou tela para o usuário. Broadcast receiver são componentes que trabalham recebendo e tratando os eventos do dispositivo. Content provider implementa o acesso aos dados tanto do sistema quanto dados do próprio aplicativo. 5. O Android disponibiliza um componente para o controle e gerenciamento de dados. Por meio desse componente, podemos acessar dados disponíveis no sistema, dados de outros aplicativos e disponibilizar os dados do próprio aplicativo para os demais aplicativos presentes no dispositivo. Qual dos componentes a abaixo representa esse componente? Você acertou! C. Content provider Content provider implementa o acesso aos dados tanto do sistema quanto dados do próprio aplicativo e por meio dele podemos acessar contatos de um smartphone ou até mesmo dados do calendário, como eventos da agenda. Services são processos realizados em background e, muitas vezes, os usuários nem sabem da sua existência. Intent implícito ou explícito são objetos de comunicação entre os vários componentes de um aplicativo e também dos componentes com o sistema Android. Broadcast receiver são componentes que trabalham recebendo e tratando os eventos do dispositivo. Componente Activity 1. Activities são responsáveis pela exibição das interfaces de usuário. Por meio destas, os usuários podem interagir com os aplicativos, usufruindo suas funcionalidades. Analise as opções a seguir e marque a que representa determinada interação do usuário com uma Activity. Você acertou! A. Informar login e senha para acessar o aplicativo. Informar login e senha para acessar o aplicativo é exemplo de interação do usuário com a interface de uma Activity. Receber notificação do sistema e processar ações adequadas são ações realizadas pelo componente Broadcast Receiver. Processar rotinas de longa duração e realizar conexões com a rede de dados normalmente são efetivadas em componentes do tipo Service. O envio de solicitação para o sistema na busca de um aplicativo, normalmente, ocorre por meio de intents. 2. Uma Activity é enviada para o segundo plano em virtude de segunda Activity ser disponibilizada ao usuário. Ao ser enviada para segundo plano, essa Activity é colocada em uma pilha, visando ao fato de que ela pode recuperar o foco novamente. A pilha utilizada para empilhar as Activities no Android segue mecanismo básico. Entre as opções a seguir, indique a que apresenta tal mecanismo. Você acertou! B. LIFO – Último a Entrar, Primeiro a Sair. LIFO - Último a Entrar, Primeiro a Sair - é o mecanismo de empilhamento de Activities utilizado pelo Android. FIFO, HIFO, LOFO e FEFO são estratégias de empilhamento usadas em diversas áreas, porém não no empilhamento de Activities. 3. O ciclo de vida de uma Activity é um dos conceitos mais importantes a serem compreendidos, tendo em vista que se trabalha com tal componente. Esse ciclo engloba todos os comportamentos e estados que determinada Activity pode assumir durante o período em que está em execução. No ciclo de vida da Activity, qual é o primeiro método a ser chamado quando a sua execução é solicitada? Você acertou! D. onCreate() "onCreate()" é o primeiro método a ser chamado ao criar uma Activity. "onResume()", "onPause()", "onDestroy()" e "onStart()" são métodos que pertencem a uma Activity e seu ciclo de vida, mas não são chamados antes do "onCreate()" em hipótese alguma. 4. A persistência de dados (processos de salvamento em uma base de dados) é tarefa crucial em aplicativo normalmente, Android ou outro, independentemente de plataforma. No Android, devido ao ciclo de vida de uma Activity, a persistência dos dados consiste em processo delicado, uma vez que, dependendo da situação, é possível que alguns métodos do ciclo de vida não sejam executados e a Activity seja eliminada sem a ação de salvar os dados de modo adequado. Qual método presente no ciclo de vida do Android normalmente é utilizado para a persistência de dados em uma Activity? Você acertou! E. onPause() "onPause()" é o método recomendado para a implementação da persistência dos dados. "onCreate()" e "onStart" são métodos do ciclo de vida que inicializam a Activity. "setContentView()" e "findViewById()" manipulam a interface de usuário e os seus controles. 5. Em uma Activity, há diversos métodos disponíveis para a realização de várias funcionalidades, desde o controle do ciclo de vida da Activity até procedimentos que controlam parâmetros passados para ela e a definição de layouts para serem exibidos em interação com o usuário, dentre vários outros. Qual dos métodos a seguir é utilizado para finalizar e destruir uma Activity do sistema? Você acertou! B. finish() "finish()" é o método que finaliza e destrói uma Activity. "onResume()", "onStart()" e "onCreate" são métodos pertencentes à Activity que fazem parte do controle do ciclo de vida da Activity. "findViewById()" busca controles da interface do usuário para tratá-los na Activity. Tipos de leiaute RelativeLayout e LinearLayout 1. O Android disponibiliza muitos recursos para se trabalhar a interface com o usuário. Dentre eles, destacam-se os layouts, componentes de fundamental importância, sendo o LinearLayout o tipo mais utilizado. Assinale a alternativa correta acerca desse tipo de layout: Você acertou! C. O LinearLayout permite o alinhamento de componentes tanto na horizontal como na vertical.O LinearLayout possibilita o alinhamento de componentes tanto na vertical como na horizontal. O alinhamento de um componente em relação ao outro é possível com o RelativeLayout e sua utilização não está ligada ao fato de possuir mais recursos que outro tipo de layout ou pelo fácil manuseio. 2. O RelativeLayout, um tipo de layout muito poderoso, permite que a interface do aplicativo apresente uma experiência fantástica de interação com os usuários. Assinale a alternativa abaixo que descreve corretamente a principal característica do RelativeLayout: Você acertou! A. O RelativeLayout permite que um componente filho tenha a sua posição atribuída em relação à posição de outro componente. A principal característica do RelativeLayout é permitir que componentes tenham sua posição determinada em relação à posição de outros. Componentes não são necessariamente empilhados como no LinearLayout e sua utilização não envolve componentes gráficos diferentes, nem a necessidade de trabalhar em conjunto com o LinearLayout. 3. No LinearLayout, tem-se a possibilidade de manipular atributos que permitem aos componentes apresentarem formatos ou comportamentos diferenciados. Um atributo que pode ser manipulado, por exemplo, é o android:layout_weight. Assinale a alternativa abaixo que descreve o que ocorre quando se manipula o valor desse atributo: Você acertou! D. Permite que um item de maior peso possa expandir e usar mais espaço na tela. Esse atributo permite que um item com maior peso possa expandir e ocupar mais espaço da tela. Não está relacionado a aparecer ao fundo dos demais, nem mesmo no topo ou fim de uma lista de exibição. 4. O RelativeLayout permite alcançar recursos fantásticos de interação com o usuário; porém, uma das grandes desvantagens desse tipo de layout é que, quando se altera um componente, pode ser necessário alterar todos os outros. Assinale a alternativa correta sobre por que isso ocorre: Você acertou! B. Ocorre pelo fato da relatividade da posição de um com o outro. Isso ocorre pelo fato da relação de posicionamento de um componente com o outro, não necessariamente pelas coordendas ou hierarquia ou encapsulamento de componentes. 5. "Indicado quando as posições dos componentes podem ser melhor descritas em relação a outro elemento (à esquerda) ou à área de fronteira do pai (lado direito, ou centrado)". De acordo com essa afirmativa, é correto dizer que se trata de: Você acertou! E. Somente RelativeLayout. Sempre que puder ser determinada a posição de um componente em relação ao outro, sem dúvida, trata-se de usar RelativeLayout. LinearLayout será quando os componentes fluem na horizontal ou vertical. Tipos de layout ConstraintLayout e TableLayout 1. O TableLayout é uma especialização do LinearLayout, muito utilizado para criar formulários, telas de login ou para mostrar informações de forma tabular, como na imagem a seguir. Para ela, quantos <TableRow> são necessários? Você acertou! C. São necessários dois TableRow. O TableRow define a quantidade de linhas existentes em um TableLayout. Na imagem, há apenasduas linhas, então, caso você usasse apenas um TableRow não existiria uma segunda linha, já três, quatro e cinco TableRow criariam um leiaute com três, quatro e cinco linhas, respectivamente. 2. Cada restrição ou constraint define a posição da view ao longo do eixo vertical ou horizontal. Ao usar o atributo app:layout_constraintStart_toStartOf="parent", informa- se ao leiaute que a view em questão vai Você acertou! C. aparecer ao lado da view parent. O atributo app:layout_constraintStart_toStartOf="parent" define que a view vai ser exibida ao lado de uma determinada view. Como o atributo setado é parent, ele vai se posicionar ao lado da ViewGroup em que ele se encontra. O atributo app:layout_constraintStart_toBottomOf aparece abaixo da view. Já o app:layout_constraintStart_toTopOf aparece acima. O valor do atributo parent faz com que a view seja acorrentada ao "pai" da view, caso contrário seria necessário mencionar a view que você quer relacionar. 3. Para definir a posição de uma view no ConstraintLayout, deve-se ter, pelo menos, uma restrição horizontal e uma vertical para a view. Cada restrição representa uma conexão ou alinhamento para outra view, o leiaute "pai" ou uma diretriz invisível. Cada restrição ou constraint define a posição da view ao longo do eixo vertical ou horizontal. São formas de criação de restrições no ConstraintLayout os seguintes: Você acertou! B. Margens, posicionamento centralizado, chains e posicionamento circular. Atualmente, o ConstraintLayout aceita as seguintes restrições: posicionamento relativo, margens, posicionamento centralizado, posicionamento circular, comportamento de visibilidade, restrições de dimensão, chains, objetos do Virtual Helpers e otimizador. Layout_span e shrinkColumns são atributos de TableLayout. As margens e os posicionamentos centralizados relacionam-se aos conteúdos das views em si, e não à sua posição. 4. No desenvolvimento de uma tela para exibir dados em tabelados usa-se o TableLayout, o qual agrupa exibições em linhas. Ao utilizá-lo, os componentes são exibidos na tela conforme Você acertou! B. a ordem em que foram escritos no leiaute apresentados na TableRow. O TableLayout exibe o leiaute conforme especificado no TableRow, sendo cada view uma coluna. Os leiautes são montados de cima para baixo, conforme o render lê o arquivo xml e constraint, chains e outros atributos não interferem num TableLayout. 5. TableLayout é um ViewGroup que agrupa exibições em linhas, já o TableRow é responsável por criar as linhas na tabela e cada elemento adicionado a ele torna-se uma coluna. Caso seja necessário expandir uma coluna para ocupar mais de um espaço deve-se utilizar o atributo: Você acertou! A. android:layout_span. Para expandir uma coluna no TableView é preciso atribuir o android:layout_span com o número de colunas desejadas. - shrinkColumns: especifica em quais colunas se quer reduzir o espaço, quando necessário. - stretchColumns: especifica em quais colunas se quer aumentar o espaço, quando necessário. - TableRow: define uma nova linha na tabela. - Layout_merge: atributo que não existe no android. Recursos e a classe R.java 1. A classe R.java tem por finalidade possibilitar a comunicação entre o código do aplicativo e o arquivo XML do recurso. Nela, está a referência aos recursos consumidos pelo aplicativo. Ainda a respeito dessa classe, é correto afirmar que: Você acertou! B. a classe R não deve ser alterada diretamente; sua alteração se dá em decorrência de alterações no código. A classe R nunca deve ser alterada diretamente e é gerada no momento da compilação do aplicativo. Além disso, ela não gera o arquivo XML, apenas realiza mapeamento entre este e o código. 2. Referenciar a utilização dos recursos é um processo bem simples, sendo preciso, apenas, referenciar o respectivo ID do recurso no código. Com base nessa afirmação, assinale a alternativa correta. Você acertou! C. Todos os IDs de recursos são definidos pela classe R automaticamente. A classe R define todos os IDs dos recursos automaticamente, não sendo necessário consultar no arquivo XML e muito menos alterar na classe. Jamais deve-se realizar ajustes diretamente nessa classe. 3. Apesar de a classe R ser o local onde os códigos de recursos são especificados, nunca deverá ser necessário verificá-la para descobrir um código de recurso. Refletindo sobre essa afirmação, assinale a alternativa correta. Você acertou! E. Essa afirmativa baseia-se no fato de que todo ID é composto pelo tipo e nome do recurso. Logo, não é necessário consultar a classe. A classe R define automaticamente todos os IDs dos recursos, que são compostos pelo tipo seguido do nome. Sendo assim, não é necessário realizar consultas à classe ou ao arquivo .xml. 4. A classe R é gerada pelo aapt automaticamente quando a aplicação é compilada.Nesse sentido, o que ocorrerá caso algo seja alterado diretamente na classe R após nova compilação do aplicativo? Você acertou! A. As alterações serão sobrepostas pela compilação e perdidas. Jamais devem ser realizadas alterações na classe R diretamente. Qualquer alteração nessa classe será sobreposta no momento em que o aplicativo for compilado de novo. Com o arquivo .xml, não deve ocorrer problema. 5. Nos projetos de desenvolvimento de aplicativos para o Android, é imprescindível conhecer e saber utilizar a classe R.java. Nesse contexto, pode-se dizer que o principal benefício dela é: Você acertou! C. possibilitar o mapeamento entre recursos e código de modo dinâmico, sem necessidade de codificação. O grande benefício da classe R é fazer o mapeamento entre o arquivo .xml dos recursos e o código do aplicativo, não sendo necessário realizar codificação específica para tal ligação. Além disso, não devem ser realizadas alterações na classe R diretamente. Componentes de tela do usuário 1. A plataforma Android oferece diversos componentes visuais sofisticados, principalmente se compararmos com o desenvolvimento de aplicativos em aparelhos celulares antigos. Sobre essa afirmativa, assinale a alternativa correta: Você acertou! C. A plataforma Android oferece componentes visuais sofisticados que não eram possíveis nas plataformas antigas. A atual plataforma Android oferece recursos visuais sofisticados que não eram possíveis em plataformas mobile antigas. Quando se fala plataforma mobile, trata-se de celular, tablet, etc. O Android, como plataforma, permite a evolução de muitos recursos além dos visuais de que estamos falando nesta unidade. 2. No Android, o conceito de View é o de um “espaço” em tela que sirva para exibir alguma mensagem ou forma de interação com o usuário, permitindo que este possa executar uma ação ou se informar sobre algo. De acordo com esse conceito, marque a alternativa que apresenta componentes relacionados a ele: Você acertou! C. Mensagens de texto, imagens e botão. Todos os componentes que, de certa forma, são apresentados ao usuário por meio de um "retângulo" na tela do aplicativo, sejam eles mensagens, botões, lista de dados e ícones, são View. Porém, componentes de fundo, como conectores, XML, entre outros, apesar de serem essenciais para o funcionamento, não entram nesse conceito. 3. A plataforma Android possibilita utilizar vários componentes visuais para a interação do usuário com o aplicativo. Leia as alternativas e identifique qual componente a seguir é utilizado para permitir ao usuário confirmar uma solicitação do aplicativo. Você acertou! E. ImageButton. O componente TextView permite exibir uma mensagem na tela, e o ListView exibe uma série de dados. Já o ImageView é usado para exibir uma imagem, e o DigitalClock, um relógio. O ImageButton oferece um botão que permite a interação do usuário; por isso, essa é a opção correta. 4. O componente ImageView tem especificamente a função de exibir imagens em telas de aplicativos Android e é um recurso muito utilizado na construção de aplicativos. Acerca dessa afirmativa, assinale a alternativa correta: Você acertou! D. O componente ImageView pode ser utilizado para exibir imagens baixadas da Internet. O componente ImageView não possibilita a interação com o usuário. Para exibir um ícone, há o componente específico, e, apesar de exibir o componente ImageButton, não é necessário o componente Button. Já para uma lista de dados, o correto seria usar o componente ListView. Assim, a resposta correta é "exibir imagens baixadas da Internet". 5. Trabalhar com componentes visuais não é difícil, já que muitos deles são possíveis via layout. Porém, você deve se atentar a alguns itens importantes. Assinale a alternativa que contenha os itens considerados importantes para se pensar ao trabalhar com layout no Android. Você acertou! A. Usabilidade e transparência. Ao trabalhar com os componentes visuais no Android, é importante ficar atento quanto a dois itens em especial: a usabilidade do usuário e a transparência para não causar problemas de visualização. As demais opções são importantes, mas podem não ser priorizadas ao se trabalhar com layouts no Android. Navegação entre telas 1. Durante o desenvolvimento de uma aplicação Android multitelas, o desenvolvedor depara-se com a necessidade de enviar dados entre as telas. O fluxo de envio de dados é linear e unidirecional, ou seja, os dados seguirão sempre de uma tela anterior para uma tela posterior, não havendo comunicação de outra forma. Existem diversas possibilidades para esse tipo de comunicação, porém, das opções a seguir, somente uma está correta. Assinale- a: Você acertou! C. Uma das formas mais comuns de comunicação entre telas é utilizar objetos da classe intent. Para a operação desejada, pode-se escrever a seguinte instrução: Intent i = new Intent(contextoAtual.this, novaTela.class); i.putExtra(“info”,”Informação”). Existem variadas formas de resolver a questão do desenvolvedor; as mais comuns envolvem a utilização de intents com ou sem bundles. Utilizando intents, o desenvolvedor obrigatoriamente deverá criar um intent— por exemplo: Intent i = new Intent(contextoAtual.this, novaTela.class). Como o uso de bundles não é obrigatório, pode-se transferir os dados por meio da própria intent, com sintaxe semelhante a: i.putExtras("info","dadosDaInformacao"). 2. A invocação de novas telas/atividades (em Android) é realizada a partir de um objeto da classe intent. Um objeto intent indica à aplicação alguma intenção. Intenções não obrigatoriamente indicam nova tela; elas podem indicar qualquer outro serviço. Contudo, supondo-se a criação de nova tela, qual das opções a seguir está correta para o comando de invocação de nova tela? Você acertou! E. Ao se criar um objeto intent de forma explícita, deve-se utilizar a instrução intent nome_objeto = new Intent(parâmetro1, parâmetro2), sendo o parâmetro1 referente ao contexto/pacote da classe da nova intenção, e o parâmetro2, a classe propriamente dita. Uma das formas de se utilizar intents para iniciar uma nova atividade é criar um intent explícito. Em um intent explícito, a sintaxe é semelhante ao seguinte exemplo: Intent novo_intent = new Intent(parâmetro1, parâmetro2), sendo o parâmetro1 referente ao contexto/pacote da nova intenção, e o parâmetro2, referente à classe da nova intenção. 3. Em aplicações Android, diferentemente do que ocorre com aplicações Web e aplicações para desktop, as telas que são apresentadas para o usuário são conhecidas como activity (ou seja, atividade), e, para que uma atividade (que não seja a principal) seja invocada, é necessária a utilização de um objeto intent, ou intenção. Sobre um intent, sua utilização e caraterísticas, é correto dizer que: Você acertou! B. Intents são objetos para troca de mensagens entre objetos de uma aplicação Android. Apesar de serem utilizados para abertura de novas telas, os intents podem ser utilizados para iniciar serviços e transmissões de mensagens/dados entre objetos e aplicações. Para a troca de mensagens entre objetos/componentes de uma aplicação Android, deve-se utilizar a classe intent. Ela representa uma intenção e pode ser utilizada para representar a intenção de iniciar uma nova atividade/activity/tela, serviços e até mesmo transmissão de mensagens/dados entre objetos e aplicações distintas que dão suporte a esse tipo de operação. 4. A combinação dos objetos intent e bundle permite que dados sejam enviados, ou seja, trocados entre as telas de uma aplicação para Android. A respeito dessa troca de mensagens entre atividades de uma aplicação para Android, é correto afirmar que: Você acertou! A. Ao armazenar os dados em um objeto bundle, garante-se que esses dados ficarão armazenados até o momento em que forem novamente solicitados. Assim, os dados podem ser recuperados posteriormente em qualquer uma das telas daaplicação. Objetos do tipo bundle permitem que dados sejam armazenados (persistidos) em uma aplicação Android até que sejam novamente necessários. Os dados em um bundle somente serão apagados se a aplicação for reinicializada ou se os dados forem propositalmente substituídos. 5. Acerca dos intents, sua invocação/criação pode ocorrer de forma explícita ou implícita sobre sua segurança, sintaxe de utilização, etc. Em relação aos intents, quais das opções a seguir está correta? Você acertou! D. Intents implícitos podem ser utilizados para invocação de atividades tanto internas quanto externas ao aplicativo. Contudo, o fato de não especificar qual atividade será invocada reduz a segurança da aplicação. Intents implícitos podem ser utilizados para invocar atividades/serviços tanto internos quanto externos à aplicação. Contudo, a utilização no modelo implícito reduz a segurança da aplicação, haja vista que não é possível determinar qual atividade/serviço será executado. Fornecimento de recursos 1. Ao desenvolver um aplicativo para o Android, é fundamental conhecer os recursos que estão disponíveis e saber como utilizá-los na aplicação. Também é possível desenvolver recursos próprios que serão utilizados por outros aplicativos. Sobre o conceito de recursos, é correto afirmar: Você acertou! B. São exemplos de recursos originais, por exemplo, os relacionados a layout de interface. Os recursos originais estão disponíveis pelo próprio Android e não em ambiente de desenvolvimento. Os exemplos de recursos originais mais utilizados são os relacionados a layout de interface. Pode-se estender recursos e também criar novos. 2. Um dos recursos que se pode trabalhar no Android são as strings. Por exemplo, se quiser padronizar o rótulo de um botão para que todo lugar em que ele seja exibido fique com a mesma informação, pode-se fazer isso alterando o arquivo string.xml. Acerca do arquivo string.xml, é correto afirmar: Você acertou! B. O arquivo string.xml fica localizado no diretório de resources e é utilizado para armazenar strings e seus valores. O arquivo strings.xml não tem armazenadas as mensagens da aplicação. Ele fica localizado no diretório de resources e é utilizado para armazenar valores de strings reutilizáveis. É um dos recursos do Android e, assim como demais recursos, deve-se referenciar com um ID. 3. Em todo projeto Android existe a necessidade de externalizar alguns itens, por exemplo, imagens, strings, para que seja possível mantê-los independentes e para que possam suportar configuração específica, idioma do dispositivos, tamanho de tela, orientação, etc. A pasta res, utiliza várias subpastas que, juntas, classificam os resources por tipo e configuração. Com base nessa explicação, é correto afirmar: Você acertou! C. A subdivisão em subpastas conforme a classificação dos recursos é importante para organização e localização. A pasta res existe em todo e qualquer projeto para Android. Além dos recursos naturais, pode- se utilizar para arquivos necessários para externalizar a aplicação. A subdivisão por pastas conforme a classificação do tipo de recurso é importante para organizar e classificar os recursos. 4. A classe R.java é gerada automaticamente pelo plugin da IDE de desenvolvimento. Essa classe tem papel fundamental, pois ela é responsável por fazer o relacionamento entre os arquivos .xml e os .java do projeto. Essa classe não pode, de forma alguma, ser alterada, e a sua alteração só será feita pela geração de uma nova compilação do projeto. Não é preciso se preocupar com isso, mas é importante conhecer seus métodos. Escolha a alternativa que está correta acerca da finalidade da classe R.java: Você acertou! D. A classe R.java é tem por finalidade manter a sincronia entre o arquivo .xml do projeto e o .java do desenvolvimento. A classe R.java tem o objetivo de manter a sincronização entre o xml do projeto e o java do desenvolvimento. Não se deve alterá-la, pois sua alteração é consequência de uma nova compilação, mas é fundamental conhecer seus métodos, pois é por meio deles que se pode sincronizar o código com os recursos da estrutura. 5. Os recursos de string fornecem strings de texto para o aplicativo com estilo e formatação de texto opcional. Existem três tipos de recursos que podem fornecer strings ao seu aplicativo. A utilização do recurso de strings permite: Você acertou! B. criar recursos de strings reutilizáveis para aplicação. Criar recursos reutilizáveis de strings é o principal objetivo. Não se utiliza o recurso string para padronizar variáveis, mensagens de texto ou layout de tela. Tela principal e componentes de menu 1. Ao se adicionar um menu na tela do aplicativo, é importante preenchê-locom itens que auxiliem o usuário a utilizar o aplicativo de forma intuitiva e adaptável às suas necessidades. Há um menu que é responsável por carregar o XML desse menu. Qual das alternativas a seguir apresenta esse menu que carrega o XML do menu? Você acertou! D. Menu Inflater. O Menu Inflater é especialista em carregar XML de menu. O método Activity.onCreateOptionsMenu(Menu menu) nos oferece um objeto menu vazio, que pode ser utilizado pelo Menu Inflater para carregar um XML, de modo que o método Activity.getMenuInflater() nos devolve um Menu Inflater. Inflate.inflate(): lê um XML e carrega um menu; essa é a especialidade dos Inflaters. 2. O uso de barra de ações ou do aplicativo tem sido uma boa prática no desenvolvimento de aplicativo. Ela é um dos elementos mais importantes da Activity do aplicativo, pois fornece uma estrutura visual e elementos interativos que são familiares aos usuários. Qual das alternativas a seguir é considerada uma barra dentro do aplicativo? Você acertou! A. Toolbar. OptionMenu é a coleção principal de itens de menu para uma atividade. É onde se devem colocar as ações que têm impacto global no aplicativo, como "Buscar", "Escrever e-mail" e "Configurações". ListView, ViewGroup e RadioButton são componentes de interface, ou seja, são utilizados nas aplicações como entrada, saída e processamentos de dados. Já o Toolbar através de um ActionBar, de acordo com a biblioteca de suporte v7 appcompat,permite implementar como uma barra de aplicativo. O uso da Toolbar da appcompat facilita a configuração de uma barra de aplicativo que funcione no conjunto mais amplo de dispositivos, além de permitir que você a personalize posteriormente ao desenvolver seu aplicativo. 3. Após criar uma ActionBar no aplicativo, é importante sobrescrever três métodos. Qual método é executado sempre antes de o menu ser mostrado e que pode ser usado para habilitar/desabilitar itens ou modificar algum conteúdo dinamicamente? Assinale a alternativa correta. Você acertou! B. onPrepareOptionsMenu. Esse método é executado sempre antes de o menu ser mostrado. Ele pode ser usado para habilitar/desabilitar itens ou modificar algum conteúdo dinamicamente. Já o método onCreateOptionsMenu infla o menu em XML que foi criado na tela, e o onOptionsItemSelected gera a ação do item que foi selecionado no menu. onMenuItemClick e onCreateContextMenu são métodos relacionado ao menu contextual. 4. É o menu que exibe seus itens abaixo do texto âncora, se houver espaço disponível na tela do aplicativo, o menu é exibido acima do texto âncora. Seus itens aparecem na tela em uma lista vertical e sua importância é em ações estendidas que são relacionados com a Activity. Que menu é esse? Assinale a alternativa correta. Você acertou! A. Menu PopUp. Option Menu é um menu em que se desenvolvem as ações do aplicativo, e menu contextual é o menu que oferece ações que afetam um item ou uma estrutura de contexto específico de UI. Menu Inflater permite inflar o menu contextual do recurso do menu, e Navigation Drawer é um painel da interface do usuário que mostra o menu de navegação principal do aplicativo. A gaveta aparece quando o usuário toca no ícone da gaveta na barra de aplicativosou quando o usuário passa o dedo pela borda esquerda da tela. Porém, o menu PopUp é um menu que exibe itens abaixo do texto âncora, se houver espaço disponível; caso contrário, acima do texto âncora. O menu PopUp exibe itens em uma lista vertical e serve para fornecer ações adicionais relacionadas a um conteúdo específico ou ações de fornecimento de uma segunda parte de comando. Suas ações não devem afetar um conteúdo correspondente diretamente; é para isso que servem as ações contextuais. Geralmente, omenu PopUp serve para as ações estendidas que relacionam os conteúdos da Activity. 5. Os dispositivos móveis estão em todos os lares, e dentro desses dispositivos estão os aplicativos, que são uma extensão do mundo real direto pra a tela do celular. Sabe-se que os aplicativos têm funcionalidades e recursos que facilitam a vida de seus usuários. Os aplicativos são constituídos por menus e componentes que executam a aplicação. A tela principal do aplicativo é a cara do app. Esse componente é o padrão de design mais importante, que abriga botões com ações, tabs e menus para interagir com usuários. Assinale a alternativa que define o componente citado. Você acertou! B. ActionBar. ActionBar é o padrão de design mais importante, é a barra de navegação que fica na parte superior da aplicação, que contém os botões com ações, tabs e menus para interagir com o usuário, mostrando-os de forma simples e consistente aos usuários; como estes já estão acostumados com os aplicativos, por serem aplicativos nativos, essa é uma grande vantagem. OptionMenu é um menu onde se desenvolvem as ações do aplicativo, e menu contextual oferece ações que afetam um item ou uma estrutura de contexto específicos de UI. ViewGroup e ListView são componentes de interface, ou seja, são utilizados nas aplicações como entrada, saída e processamento de dados. Telas de cadastro 1. Qual das alternativas abaixo descreve corretamente o objeto LiveData e a classe MutableLiveData? Você acertou! E. Um objeto LiveData é parte integrante do ViewModel e naturalmente implementa o padrão Observer. As classes MutableLiveData permitem que os objetos LiveData sejam definidos manualmente. Um objeto LiveData é parte integrante do ViewModel e naturalmente implementa o padrão Observer. As classes MutableLiveData permitem que os objetos LiveData sejam definidos manualmente. Um objeto que implemente um padrão Observer não pode implementar um padrão Factory, uma vez que o padrão Factory seria uma fábrica de objetos, e não uma classe que "observa" alterações em estados de objetos criados para determinar ações a serem executadas. Além disso, é a classe MutableLiveData que permite alterar de forma manual um objeto LiveData. 2. Com base no material estudado, marque abaixo a alternativa que apresenta as opções mais adequadas para o desenvolvimento de uma tela de cadastro para aplicações móveis. Você acertou! B. Evitar cadastros extensos com solicitação de grande quantidade de dados. Quando isto for necessário, o indicado é estimular o preenchimento gradativo, não impedindo a utilização da ferramenta caso o cadastro não esteja completo. Sempre que se cria telas de cadastro para aplicativos móveis, deve-se evitar telas extensas, com grande quantidade de dados. Para os casos em que são necessárias muitas informações, deve-se optar pelo preenchimento gradativo, não condicionando a utilização do aplicativo ao preenchimento completo do cadastro. Dados que não são de extrema importância não devem ser obrigatórios. Apesar de ser comum observar telas com rolagens, o mais indicado ainda é a utilização de várias telas. Evite rolagens, pois o usuário pode se confundir. Lembre-se também de que uma aplicação deve exigir tantos dados quanto forem necessários para seu funcionamento correto e para operações futuras, mesmo que isso implique em vários campos a serem preenchidos, nesse caso, o melhor a fazer é saber como organizá-los. Contudo, lembre-se, somente exija que um usuário realize cadastro se realmente for necessário. Algumas aplicações não dependem de cadastro prévio, não precisam de segurança de dados, são simples e pontuais. Nesse caso, exigir cadastro é desnecessário. 3. Em diversos casos, como desenvolvedor, você terá que utilizar componentes do tipo RadioGroup e RadioButton. Caso tenha que fazê-lo, qual seria a alternativa correta para recuperação do RadioButton marcado na interface gráfica com o usuário? Você acertou! E. Integer sVip = rgVip.getCheckedRadioButtonId(); Button rbVip = (RadioButton)findViewById(sVip); Integer sVip = rgVip.getCheckedRadioButtonId(); Button rbVip = (RadioButton)findViewById(sVip); Para recuperar a identificação do botão marcado em um RadioGroup, é preciso recorrer ao método getCheckedRadioButtonId() do objeto que representa o RadioGroup. Observe que não existe uma função CheckedRadioButtonId() ou somente getCheckedRadioButton(), veja também que os métodos iniciados com set tem o objetivo de atribuir valores e não recuperar. O segundo passo é recuperar a instância do objeto RadioButton referente ao ID que foi recuperado. O método é o findViewById(idDoObjeto), em quase todas as respostas o método está correto, no entanto, seu antecessor não está. 4. Com base no que foi estudado no material, qual alternativa melhor se adequa aos conceitos, descrições e funcionalidades da classe ViewModel? Você acertou! C. Uma classe ViewModel permite a persistência de dados durante todo o ciclo de vida de uma aplicação. Por meio dessa classe, é possível transferir dados entre as diferentes atividades de uma aplicação, além de criar ações de recuperação de dados em caso de falhas no sistema. 5. Em algumas ocasiões, a necessidade de preencher cadastros para ter acesso ao sistema/aplicativo pode ser suprimida, recuperando informações de outros sistemas ou redes sociais das quais o usuário participa. Qual das opções abaixo representa uma forma correta de implementar esta funcionalidade? Você acertou! B. Um acordo “lógico” é realizado entre as partes, utilizando plug-ins ou códigos disponibilizados pelas proprietárias das redes sociais. Para o desenvolvedor Android, a comunicação pode ser feita através do componente/plug-in Google Sign in. Desenvolvedores de aplicativos móveis podem utilizar dados disponibilizados pelos usuários em cadastros de redes sociais para preencher seus cadastros (ou parte deles). No caso dos desenvolvedores Android, esta coleta de dados é feita através do componente Google Identity Platform que mantém uma espécie de acordo "lógico" entre a aplicação e a rede social, permitindo a troca de informações. Alertas e a classe Toast 1. É de suma importância conhecer as principais funções da classe Toast. Com elas, o programador altera o conteúdo a ser apresentado, bem como suas características de cor e tamanho, entre outras. Marque a opção que descreve a função makeText(). Você acertou! A. Recebe 3 parâmetros: primeiro, o contexto em que o componente será apresentado; segundo, o texto a ser apresentado; e terceiro, o tempo de duração do alerta na tela. O retorno dessa função é um objeto do tipo Toast devidamente inicializado. MakeText() recebe 3 parâmetros: primeiro, o contexto em que o componente será apresentado; segundo, o texto a ser apresentado; e o terceiro, o tempo de duração do alerta na tela. O retorno dessa função é um objeto do tipo Toast devidamente inicializado. A função que define a posição é a setGravity(). A função que define o tempo do alerta é a setDuration(). Para exibir o alerta na tela, a função chamada é a show(). 2. A empresa de produtos alimentícios está solicitando a criação de um aplicativo e quer apresentar mensagem de erro caso haja falha de conexão quando o usuário finalizar o pedido de compra de produtos. Assinale a alternativa que representa o modo correto de codificar a apresentação da mensagem em Java. Você acertou! A. Toast.makeText(getApplicationContext(), “Nãofoi possível enviar seu pedido, verifique sua conexão com a internet.”, Toast.LENGTH_LONG).show(); A função da classe Toast que cria a instância do objeto é a makeText, que tem como parâmetro o contexto em que será apresentado e é obtida por meio do método getApplicationContext(), o texto a ser apresentado e o tempo que ficará visível na tela. O método show, no final, serve para apresentar o objeto que foi instanciado no momento anterior. A função setGravity serve para mudar a posição do alerta na tela. 3. Dependendo do desenho das telas do aplicativo, pode ser necessário reposicionar o alerta na tela. Para isso, é preciso que o desenvolvedor saiba qual função utilizar. Sendo assim, marque a alternativa que representa o uso correto da função responsável por definir a posição do alerta. Você acertou! C. setGravity. A função makeText cria a instância do objeto e tem como parâmetros o contexto em que será apresentado, o conteúdo e o tempo que ficará visível na tela. A função show exibe o alerta na tela. A setDuration altera o tempo de exibição, e a view conecta o alerta ao componente no qual será exibido. A função que define a posição em que o alerta vai aparecer na tela é a setGravity(). 4. É muito comum o desenvolvedor passar parâmetros para funções, a fim de que sejam processados como parte da lógica de negócio do seu projeto. Marque a opção que representa o parâmetro passado para o método construtor no caso de o desenvolvedor inicializar a variável com: Toast toast = new Toast(). Você acertou! A. getApplicationContext. Quando o usuário utiliza o construtor para inicializar um objeto do tipo Toast, o parâmetro passado deve ser o do contexto da aplicação e, portanto, deve ser utilizado o método getApplicationContext(). Está errado passar um valor numérico, bem como as funções show, setGravity ou setView como parâmetro, já que elas retornam valores de tipo diferente do que o esperado pelo construtor Toast. 5. Caso o programador tenha inicializado a variável por meio do construtor, mas precise adicionar o texto em segundo momento, marque a opção que representa o comando utilizado a fim de passar o texto para o objeto. Você acertou! A. setText(“mensagem”); Caso o desenvolvedor não tenha inicializado a variável com o texto por meio do método makeText ou queira alterar a mensagem a ser enviada, a função a ser utilizada é a setText(). Com exceção do método setView, que define em qual view o alerta vai aparecer, os demais métodos não existem. Persistência de dados em dispositivos móveis 1. Ao utilizar a plataforma Google para o desenvolvimento de aplicativos móveis, existem algumas possibilidades de armazenamento dos dados do aplicativo. Segundo a Google, quais seriam as opções possíveis de utilizar para armazenar os dados em uma aplicação Android? Você acertou! B. Shared preferences, armazenamento interno, banco de dados relacional, conexão de rede e servidores externos. Quando for para o armazenamento das informações em dispositivos móveis na plataforma Android, é possível armazenar os dados de cinco maneiras diferentes: shared preferences, armazenamento interno, armazenamento externo, banco de dados relacional e conexão de rede. 2. A persistência de dados pode ser conceitualizada como o armazenamento coerente e confiável das informações em um sistema de armazenamento de dados. Em outras palavras, como poderia ser um possível conceito de persistência de dados para dispositivos móveis? Você acertou! E. Garantir que os dados que estão sendo manipulados em um aplicativo não sejam perdidos quando a aplicação for encerrada. A persistência de dados em aplicativos móveis pode ser conceitualizada como a garantia de que os dados, os quais estão sendo manipulados em um aplicativo, não sejam perdidos quando a aplicação for encerrada. 3. Um aplicativo móvel deve ser capaz de lidar com a troca de dados em ambientes heterogêneos e com baixa confiabilidade, de maneira segura, consistente e com desempenho. Quando se fala em segurança da informação, quais são os três aspectos fundamentais de serem observados? Você acertou! A. Confidencialidade, integridade e disponibilidade. A segurança de dados pode ser vista como a proteção dos dados contra sua corrupção, podendo ser chamada de segurança da informação. A segurança da informação se define em três palavras: confidencialidade, integridade e disponibilidade, CID (do inglês CIA, Confidentiality, Integrity and Availability). 4. As propriedades básicas de uma transação são popularmente conhecidas pelo acrônimo ACID (atomicidade, consistência, integridade e durabilidade). Qual alternativa representa uma informação correta? Você acertou! E. Uma transação atômica tem por conceito ser uma unidade de processamento que é ou não realizada de forma integral. Uma transação atômica pode ser conceitualizada como uma unidade de processamento, a qual deve ser realizada de maneira integral ou não. 5. SQLite é uma das ferramentas mais utilizadas para armazenamento de dados em aplicativos móveis. Se houvesse uma tabela chamada “TabExer”, com os campos (id int primary key, enunciado text, gabarito text) e você quisesse inserir um registro nessa tabela, qual dos comandos você deveria executar? Você acertou! C. sqlite> INSERT INTO TabExer (id, enunciado, gabarito) values (1, “Nesta questão...”, “A”). No momento da inserção de um registro deve ser seguida a ordem dos campos que foram listados antes do values “(id, enunciado, gabarito)”, respeitando o seu tipo (int, text, text). Funcionalidades nativas 1. Quando se fala em desenvolvimento específico para cada plataforma, é possível chamar essa abordagem de desenvolvimento nativo. Sendo assim, marque a alternativa que melhor corresponde a esse tipo de desenvolvimento. Resposta correta. A. É quando toda e qualquer funcionalidade de uma determinada plataforma fica à disposição, sem restrições, podendo implementar padrões de interface gráfica e de experiência com o usuário. É quando toda e qualquer funcionalidade de uma determinada plataforma fica à disposição. A grande vantagem das aplicações nativas é a capacidade que elas têm de se comunicar com os dispositivos do aparelho, como câmera, acelerômetro, entre outros. Isso faz com que a aplicação fique mais completa. 2. Além do desenvolvimento nativo, é possível elencar o desenvolvimento híbrido, o qual pode ser descrito como uma mistura do desenvolvimento nativo, utilizando os recursos mais complexos de hardware, com o desenvolvimento Web, utilizando HTML5, CSS e JavaScript. Sendo assim, marque a alternativa que melhor conceitualiza o desenvolvimento híbrido. Você acertou! E. Uma aplicação híbrida é desenvolvida para funcionar em múltiplas plataformas, sendo que os custos de apoio a uma aplicação híbrida podem ser maiores que os custos de apoio a uma aplicação nativa. Uma aplicação híbrida é desenvolvida para funcionar em múltiplas plataformas. É preciso utilizar uma única linguagem de programação (como Java ou uma combinação de HTML5 e Javascript) e, após a aplicação, pode ser compilada para ser executada em cada uma das plataformas (como iOS e Android, por exemplo). A maior vantagem de aplicativos híbridos é que eles permitem o suporte a vários sistemas operacionais com um custo mais razoável do que desenvolver vários aplicativos nativos. 3. Devido ao não acesso direto às funcionalidades nativas do dispositivo, algumas das interações mais específicas, serão, por padrão, controladas pelo auxílio de alguns plugins e/ou ferramentas desenvolvidas para o sistema operacional específico. Qual das opções a seguir é um possível exemplo de framework que possibilita a comunicação com as funcionalidades nativas do dispositivo? Resposta correta. B. Apache Cordova. O Apache Cordova é uma estrutura de desenvolvimento móvel de código aberto. Ele permite que sejam utilizadas tecnologias padrões da Web, como HTML5, CSS3 e JavaScript, para o
Compartilhar