Olá, estudante! Tudo bem? Seja bem-vindo(a) à disciplina de Programação Mobile!
Nesta lição, iremos conhecer um pouco mais cada assunto estudado na primeira parte desta disciplina. Hoje, iniciamos com as restrições que temos ao desenvolvermos para dispositivos móveis.
O desenvolvimento de aplicativos para dispositivos móveis apresenta desafios específicos devido às restrições de recursos dos próprios dispositivos, como memória, capacidade de processamento, conectividade, entre outros aspectos que impactam diretamente o desempenho e a experiência de uso do aplicativo.
Logo, o nosso objetivo, nesta lição, é fazer com que você relembre e conheça as restrições de recursos mais impactantes e como elas influenciam o desenvolvimento de aplicativos móveis. Além disso, você compreenderá como essas limitações te ajudam a tomar decisões de design e desenvolvimento mais eficientes e a preparar aplicativos que ofereçam uma boa experiência ao usuário mesmo com recursos limitados.
Ao final desta lição, você será capaz de identificar as principais restrições dos dispositivos móveis, compreender como elas afetam o desenvolvimento de aplicativos e aplicar estratégias práticas para contorná-las, garantindo eficiência e uma experiência de qualidade para o usuário final.
Vamos lá?
Suponha que você deseja criar um aplicativo que ofereça uma experiência de realidade aumentada, permitindo que usuários visualizem informações adicionais ao apontarem a câmera para um objeto. No entanto, você se depara com uma limitação de processamento e de memória no dispositivo em que está testando o aplicativo. Em outros dispositivos, a bateria descarrega rapidamente enquanto o aplicativo está em uso. Nessa situação, como garantir uma boa experiência para todos os usuários, considerando que cada dispositivo tem diferentes capacidades de hardware e restrições de recursos?
Pense um pouco sobre essa situação. Reflita sobre como isso poderia ser resolvido, pois se trata de um exemplo de como as restrições dos dispositivos móveis podem afetar o desenvolvimento de aplicativos. Hoje, iremos explorar os principais tipos de limitações, para que você, futuro(a) Técnico em Desenvolvimento de Sistemas, possa entender como contorná-los e, assim, esteja preparado(a) para criar aplicativos eficientes e acessíveis.
Vamos nos aprofundar!
Vamos entender melhor como essas restrições afetam o desenvolvimento na prática? Para isso, vamos utilizar como exemplo uma situação hipotética. No case de hoje, temos a empresa App Funcional, que desenvolve aplicativos para eventos esportivos ao vivo. Ao lançar um novo aplicativo de acompanhamento de resultados em tempo real, a empresa começou a receber reclamações dos usuários sobre o consumo excessivo de bateria e travamentos frequentes. Ao investigar, a equipe de desenvolvimento percebeu que o aplicativo realizava constantes atualizações em segundo plano para manter os dados sincronizados com o servidor.
Para resolver esses problemas, a equipe de desenvolvimento implementou uma série de otimizações: foi reduzida a frequência das atualizações e introduzidos modos de economia de bateria. Com isso, o desempenho do aplicativo melhorou, e as reclamações dos usuários diminuíram. Depois do lançamento das atualizações, o aplicativo foi avaliado novamente pelos usuários e recebeu feedback positivo. Eles elogiaram a redução do consumo de bateria e a estabilidade geral do sistema. Como resultado, a empresa conseguiu recuperar a base de usuários e aumentou a taxa de retenção em mais de 30%, provando que ajustes eficientes podem transformar desafios em oportunidades de crescimento.
Observe que esse caso mostra como otimizações específicas podem ajudar a contornar restrições comuns em dispositivos móveis, proporcionando uma experiência mais satisfatória para o usuário e gerando resultados positivos tanto para a empresa quanto para os clientes.
Vamos saber mais sobre isso?
No desenvolvimento de aplicativos móveis, as restrições de recursos são aspectos fundamentais que devem ser considerados. Diante disso, agora, na conceitualização, vamos conhecer algumas restrições mais impactantes e como elas afetam o desenvolvimento. Para que você compreenda melhor, vamos abordar essas restrições de maneira separada.
Os dispositivos móveis variam muito em tamanho de tela e resolução. Nesse sentido, desenvolver aplicativos para diferentes dimensões exige uma abordagem chamada design responsivo, que, segundo Zemel (2015), é aquele design que responde a quaisquer dispositivos/resoluções e, devido a uma série de características técnicas bem definidas, é bem apresentado em qualquer um deles. De maneira geral, aplicativos responsivos oferecem uma experiência consistente, mas também consomem mais recursos de desenvolvimento, pois é necessário testar e otimizar a interface para diversos dispositivos.
O consumo de energia é uma das maiores preocupações dos usuários de dispositivos móveis. Por isso, aplicativos que drenam rapidamente a bateria podem ser desinstalados ou abandonados, mesmo que ofereçam funcionalidades úteis. O impacto no consumo de bateria está diretamente relacionado às tarefas que o aplicativo executa, sendo as mais intensivas as que envolvem processos em segundo plano, uso de sensores e hardware (como GPS, câmera, microfone ou gráficos 3D) e conexões de rede frequentes. Vamos compreender melhor isso!
Quando aplicativos executam tarefas mesmo após o usuário encerrá-los — como atualizações, sincronizações automáticas ou notificações push —, o consumo de bateria pode aumentar significativamente. Segundo Fonseca (2019), notificações push são mensagens e alertas recebidos nas telas iniciais dos dispositivos, projetados para engajar o usuário e estimular interações com o aplicativo.
Sendo assim, para minimizar o impacto no consumo de energia, é essencial limitar essas atividades. Uma boa prática é implementar serviços em segundo plano condicionais, acionando-os apenas quando realmente necessário. Outra abordagem é usar agendadores de tarefas, como o JobScheduler no Android, que, segundo o Google Developers (2024), é uma API usada para agendar diversos tipos de tarefas que serão executadas no próprio processo de aplicação.
Sensores, como o GPS, a câmera e o acelerômetro, consomem muita energia. Aplicativos que usam localização, por exemplo, podem alternar entre diferentes métodos de geolocalização de acordo com as especificações necessárias:
Alta precisão (GPS): consome mais energia, ideal para a navegação em tempo real.
Baixa precisão (Wi-Fi ou torres de celular): economiza energia e é adequada para localização aproximada.
Nesse sentido, uma abordagem eficiente é integrar APIs de localização otimizadas, como a Fused Location Provider API, que combina inteligentemente diferentes sinais para fornecer as informações de localização que o seu aplicativo necessita (Google Developers, 2025).
Aplicativos com gráficos intensivos, como jogos ou interfaces animadas, requerem alta capacidade de processamento e, consequentemente, consomem mais bateria. Para mitigar isso, é importante reduzir a complexidade dos gráficos, limitar a taxa de quadros por segundo (FPS) para adequar o desempenho ao tipo de dispositivo e usar motores gráficos otimizados para dispositivos móveis, como Unity ou Unreal Engine, configurados para economizar energia.
A comunicação frequente com servidores (sincronizações em tempo real, envio/recebimento de dados) impacta diretamente o consumo de energia. Para minimizar esse impacto, pode-se utilizar conexões intermitentes, realizando sincronizações apenas quando necessário ou em intervalos definidos. Além disso, pode ser implementado um cachê local para reduzir o número de chamadas ao servidor e promover a compactação dos dados transmitidos para economizar energia e uso de rede.
A capacidade de processamento em dispositivos móveis é limitada se comparada com a dos computadores. Além disso, a variedade de dispositivos cria um cenário de fragmentação, visto que o aplicativo precisa funcionar bem em aparelhos com capacidades de processamento distintas. Sendo assim, aqueles aplicativos que envolvem animações complexas ou gráficos de alta resolução devem ser otimizados para garantir que os usuários com dispositivos menos potentes não experimentem lentidão ou travamentos.
Muitos dispositivos, especialmente modelos mais antigos ou de entrada, ainda possuem capacidade limitada de armazenamento. Aplicativos que ocupam muito espaço tendem a ser menos atrativos para usuários com pouco espaço disponível. Para minimizar o uso de armazenamento local, podem ser empregadas técnicas, como carregamento sob demanda e armazenamento na nuvem.
A RAM é essencial para a execução de aplicativos. Nesse contexto, aplicativos que consomem muita memória RAM podem causar lentidão e até mesmo forçar o sistema a fechar outros aplicativos em execução. No desenvolvimento, é fundamental gerenciar bem os recursos e evitar o uso excessivo de memória, garantindo que a aplicação rode de forma eficiente sem sobrecarregar o dispositivo.
Em muitos casos, os aplicativos móveis precisam de conectividade para funcionar. No entanto, a dependência de dados móveis pode ser uma barreira para usuários com planos limitados ou em áreas com pouca cobertura de rede. Portanto, é recomendável que o aplicativo funcione no modo off-line, sempre que possível, e atualize dados apenas quando necessário. Aplicativos que exigem conexão constante precisam comunicar claramente esse requisito ao usuário para evitar frustrações.
Nem todos os dispositivos podem rodar as versões mais recentes do sistema operacional. Por isso, os desenvolvedores precisam decidir quais versões do sistema serão suportadas e ajustar os recursos de acordo com as limitações de cada uma. Além disso, é essencial testar o aplicativo em diferentes versões para garantir a compatibilidade e o desempenho.
Para lidar com essas limitações, você, futuro(a) Técnico(a) em Desenvolvimento de Sistemas, pode adotar algumas práticas que ajudam a otimizar os recursos. Na Figura 1, reunimos as principais técnicas.
Entender as restrições dos dispositivos móveis é essencial para desenvolver aplicativos eficientes e bem-sucedidos. As limitações de tela, bateria, processamento, memória e conectividade devem ser consideradas em cada etapa do desenvolvimento. Ao implementar boas práticas para contornar essas restrições, enquanto desenvolvedor(a), você poderá criar aplicativos que ofereçam uma experiência de usuário satisfatória, independentemente das limitações do dispositivo.
Enquanto futuro(a) Técnico em Desenvolvimento de Sistemas, entender as restrições de recursos em dispositivos móveis é muito importante (e até mesmo um diferencial), pois essas limitações impactam diretamente a performance e a experiência do usuário. Ao desenvolver aplicativos para essas plataformas, é necessário otimizar o uso de memória, processamento e conectividade, além de considerar a duração da bateria e a capacidade de resposta do dispositivo. Sendo assim, o que estudamos na lição de hoje permitirá que você, enquanto profissional, tome decisões mais assertivas no design e na implementação do código, criando soluções eficientes que garantam a qualidade da experiência do usuário, mesmo quando os recursos do dispositivo são limitados.
Agora chegou a sua vez! Nesta aplicação do conteúdo, você irá executar o JobScheduler para agendar tarefas em segundo plano de maneira eficiente. O desafio de hoje consiste em criar um serviço simples que será executado em segundo plano quando as condições forem atendidas, como a disponibilidade de rede. Para iniciar essa prática, siga os passos a seguir:
Tenha uma máquina com o Android Studio instalado (esse processo você já conhece da primeira parte da disciplina).
Um projeto em branco (crie um projeto).
Passo a passo:
1. Crie uma classe que estenda JobService. Esse serviço será responsável por executar a tarefa em segundo plano. Vamos exibir apenas um log para confirmar que o job foi executado conforme Figura 2.
2. Depois, registre o serviço no arquivo AndroidManifest.xml para que o Android saiba que a sua aplicação possui um JobService, conforme Figura 3.
3. Por fim, agende o job na MainActivity, no método, onCreate. O JobScheduler será usado para definir quando o job será executado, com base nas condições que você configurar (por exemplo, conexão de rede), conforme Figura 4.
Quando você rodar o aplicativo, o “JobScheduler” irá agendar o “Job”, que será executado assim que a rede estiver disponível. O log “Job started!” será exibido no “Logcat”, confirmando que o serviço foi iniciado.
Ao cumprir o desafio proposto, você terá experimentado de forma prática como agendar e gerenciar tarefas em segundo plano usando o JobScheduler. Essa técnica otimiza o uso de recursos no desenvolvimento de aplicativos móveis, evitando o consumo excessivo de bateria e garantindo que as tarefas sejam executadas apenas quando necessário, sem interferir diretamente na experiência do usuário.
FONSECA, L. O que são as notificações push? Descubra como elas podem ser úteis na estratégia do seu site. Rock Content, 3 jan. 2019. Disponível em: https://www.rockcontent.com/br/blog/notificacoes-push/. Acesso em: 14 jan. 2025.
GOOGLE DEVELOPERS. JobScheduler. Google Developers, 2024. Disponível em: https://developer.android.com/reference/android/app/job/JobScheduler. Acesso em: 14 jan. 2025.
GOOGLE DEVELOPERS. Simple, battery-efficient location API for Android. Google Developers, c2025. Disponível em: https://developers.google.com/location-context/fused-location-provider. Acesso em: 14 jan. 2025.
ZEMEL, T. Web design responsivo: páginas adaptáveis para todos os dispositivos. São Paulo: Casa do Código, 2015.