DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 

  Este é um post disponível para assinantes MVP
Este post também está disponível para assinantes da Mobile magazine DIGITAL
ou para quem possui Créditos DevMedia.  Clique aqui para saber mais!

Multithreading em Android e IOS - Revista Mobile Magazine 42

Neste artigo abordaremos algumas formas de utilização de nultithreading em duas das principais plataformas móveis existentes no mercado: Android e IOS.





Mobile magazine 42

[Artigo disponível no Leitor Digital DevMedia. Clique aqui para acessá-lo]

> Clique aqui para ler todos os artigos da Mobile magazine 42


Com a popularização das plataformas móveis, cada vez mais desenvolvedores tem se aventurado a criar novas e interessantes aplicações para smartphones e tablets. Aplicações móveis precisam ser responsivas aos comandos dos usuários, mantendo-se fluidas nas trocas de tela ou durante a interação do usuário com seus componentes de interface. Fazer com que aplicações se comportem desta forma é especialmente difícil se você desenvolve soluções móveis do tipo cliente-servidor, nas quais operações demoradas como download de dados Internet e rotinas locais de IO (como ler ou gravar arquivos) são frequentemente executadas.

Se implementadas de forma incorreta, operações de IO podem facilmente travar a UI da aplicação até que sua execução seja finalizada, prejudicando a experiência do usuário final e potencialmente danificando a imagem da sua aplicação. Para casos como este, o uso de operações assíncronas e threads podem ser utilizados a fim de permitir que rotinas possam ser executadas enquanto a aplicação estiver interagindo com o usuário. Para tratar deste assunto, este artigo demonstrará algumas técnicas de desenvolvimento baseados em programação concorrente.

Por concorrência podemos entender a capacidade de uma aplicação em executar simultaneamente diversas operações (como baixar arquivos, executar musicas, acessar sistema de arquivos) e, acima de tudo, sem que a aplicação congele ou trave por determinados períodos de tempo. Além disso, o uso de concorrência permite ganho de performance da sua aplicação eventualmente tirando proveito de sistemas com processadores multi-core - cada vez mais presentes nos dispositivos móveis - onde diversas rotinas poderão ser executadas em paralelo pelos diversos núcleos do processador (ler Nota DevMan 1).

Nota DevMan 1. Processadores
Em processadores de núcleo único, rotinas assíncronas são executadas por TDM (Time Division Multiplexing). O processador alterna seus contextos de execução entre os diversos threads ativos em frequência tamanha a dar impressão ao usuário de que os threads estão sendo executados simultaneamente.

Devido às peculiaridades e complexidade da programação utilizando concorrência, é altamente recomendado que a sua utilização seja planejada desde o principio, definindo-se claramente quais áreas e rotinas da aplicação deverão rodar de forma assíncrona. Converter uma aplicação existente para suportar concorrência é consideravelmente mais difícil e pode levar a falhas de execução indesejadas.

Neste artigo, abordaremos algumas formas de utilização deste assunto em duas das principais plataformas móveis existentes no mercado: Android e IOS. Apesar da diferença nas suas APIs e linguagens de programação, o fundamento de concorrência é semelhante em ambas e tem base em conceitos comuns e bastante fundamentais dos sistemas operacionais: Processos e Threads.


Processos e Threads
Definiremos Processos como unidades independentes de execução gerenciadas pelo sistema operacional. Processos possuem seu próprio espaço de endereçamento de memória e se comunicam com outros processos apenas por métodos intermediados pelo sistema operacional, conhecidos como IPC (Inter-process Communication). Threads, por sua vez, são pequenas unidades de execução (podemos chamar de tarefas) que são executadas dentro de um processo onde sua área de memória é compartilhada entre outros Threads do mesmo processo, permitindo a comunicação entre si.

No momento em que uma aplicação é inicializada, o sistema operacional se encarrega de criar um processo responsável por gerenciar seu estado e sua área de memória. No caso das plataformas IOS e Android, logo após inicializado, o processo criará o primeiro Thread da aplicação, comumente denominado de Main Thread (conhecido também como UI Thread), que será responsável pelo Loop de eventos e atualização dos seus componentes de UI. Dessa forma, toda lógica executada daí em diante será inicializada a partir do Main Thread recém criado. Caso nenhuma lógica para concorrência seja utilizada nesta aplicação, poderemos apelida-la de Single Threaded Application (aplicação de thread único).
"
A exibição deste artigo foi interrompida.

  Este é um post disponível para assinantes MVP
Este post também está disponível para assinantes da Mobile magazine DIGITAL
ou para quem possui Créditos DevMedia.  Clique aqui para saber mais!


Augusto Ferrarini
Sócio proprietário da Ferrarini Tecnologia, é criador do Teradesk, aplicação vencedora do Google Android Developer Challende e AppCircus edição Brasil. É um dos pioneiros na utilização da plataforma Android, especialista em desenvolvimento para dispositivos móveis e arquiteto Java com 12 anos de exp...
O que você achou deste post?

    0 COMENTÁRIO

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.


Nenhum comentário foi postado - seja o primeiro a comentar!
Cursos relacionados
Publicidade
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]


Este post está fechado. Saiba mais sobre a assinatura MVP!
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2013 - Todos os Direitos Reservados a web-03