Efficient Android Threading
(2977)
CategoriasAndroid, Design, Protótipo
AutorVinícius Thiengo
Vídeo aulas186
Tempo15 horas
ExercíciosSim
CertificadoSim
CategoriaEngenharia de Software
Autor(es)Vaughn Vernon
EditoraAlta Books
Edição1ª
Ano2024
Páginas160
Opa Blz?
Nesse post falo sobre o livro Efficient Android Threading de Anders Goransson que terminei a leitura essa semana. Procurando ir mais fundo na estrutura do Android resolvi ler o livro, pois sei que Thread é um conteúdo muito importante e necessário de ser dominado se quiser ir mais no core do Android. O autor, Anders Goransson, está no desenvolvimento mobile desde 2005 e desde o lançamento do primeiro device com Android ele já estava lá para ajudar a comunidade crescer.
Desde o ínicio, se você está procurando aprofundar os conhecimentos em Android já lhe recomendo esse livro. O livro não fala somente de Thread, AsyncTask, Runnable, ... como pode parecer. O autor busca também falar sobre entidades que executam na Thread Principal (ou Thread UI), porém que são utilizadas frequentemente com Threads Background em sua implementação, por exemplo, o Service (não IntentService, esse tem sua própria Thread de background). O autor se preocupa em falar sobre e mostrar o código completo de exemplo da tecnologia que está sendo apresentada. Uma coisa interessante do livro é que o autor busca logo nos primeiros cápitulos mostrar como o Android funciona. Uma parte que realmente foi nova para mim foi a parte do Garbage Collector. Realmente conheço o Garbage Collector, porém saber que criar classes internas sem serem estáticas podem aumentar as chances de um Memory Leak foi novidade. E ainda é apresentado em diagramas o que está acontecendo. Realmente a parte de Garbarge Collector e Memory Leak ficaram muito show de bola.
Uma outra coisa interessante é a parte que o autor mostra como funciona quando abrimos um APP, que é chamado o Zygote que já tem as libs necessárias para carregar uma aplicação na memória e colocar em funcionamento enquanto o ambiente real de execução e processo da aplicação ainda estão sendo criados no background (processo que é pesado no Android e cada APP tem o seu processo e ambiente de execução). O Zygote é uma entidade, no caso, única, que permite acelerrar o processo de uso da APP, pois essa entidade já tem as libs necessárias pré-carregadas. O livro fala como funciona os componentes do Android e seus respectivos objetos, por exemplo, quando abrimos um APP, dentre os componentes que são inicializados o componente Activity é iniciado e consequentemente o objeto Activity é criado, porém quando rotacionamos a tela (sem configChanges em ação) o componente Activity é destruído na chamda do onDestroy() e outro componente Activity é criado no onCreate(), porém é criado também outro objeto Activity e o objeto anterior que não tem mais referência a ele, consequentemente é marcado para ser coletado pelo Garbage Collector, porém nós não temos controle de quando o Garbage Collector vai coletá-lo, logo como cada APP tem uma heap (local onde ficam os recurso sendo utilizados pela APP, objetos, por exemplo) dedicada a ela e essa heap tem limite de tamanho, as chances de termos um problema de Memory Leak aumentam devido ao objeto Activity que possivelmente ainda não foi coletado estar na memória, ou seja, na heap da APP... puts, achei um baita knowledge essa parte.
O livro fala também sobre entidades que facilitam o uso do ContentProvider, digo, acessar o ContentProvider de outras APPs, porém essa parte não vi como um "Big Deal", pois ContentProvider não é lá como um fragment que temos realmente que está utilizando frequentemente. A parte de Looper, MessageQueue, Handler e HandlerThread também são show de bola. Quase esqueci, logo no começo o autor fala sobre o problema de Race Condition, que na verdade nem é um problema do Android em especifico, é um problema no uso não consciente de Threads em Java, vai abrindo as Threads e manipulando variáveis que foram declaradas em um escopo a cima e acaba tendo valores não consistentes em pelo menos uma das Threads, e ai acontece o que considero o pior erro, de lógica, pois não há exceptions ou compilation errors para ajudar, somente resultado inconsistente na saída da aplicação. O autor aborda muito também a classe ThradPoolExecutor e a interface Executor, que são sim "Big Deals", alias se estiver utilizando concorrência no background com a criação de múltiplas Threads (na unha), o autor recomenda nesse caso utilizar um ThreadPoolExecutor devido melhor gerenciamento de Threads e controle das tasks a serem executadas.
O ponto negativo que encontrei no livro foi a não implementação completa de um script que utilizava a comunicação entre duas aplicações via AIDL, mas mesmo assim o autor indicou que o uso do AIDL é recomendado somente quando há a necessidade de acesso a serviços de outras APPs, porém em modo multithreading, caso contrário um simples bind resolve.
Bom o livro é muito show de bola, realmente dá para aprender coisas que não são facilmente percebidas na documentação do Android, porém são importantes, ainda mais quando o assunto é otimização da APP. Não fique na vibe de que "não vou ler, pois não fala de Material Design", pois o maior impacto do Material Design foi mesmo no design, muitas das entidades utilizadas anteriormente continuam sendo utilizadas, inclusive as Threads são as mesmas. Outro ponto negativo é que o livro não está disponível em português, mas se você tiver o inglês de leitura, keep going, vai valer a pena. Bom 5 estrelas fácil.
Obs. : Mesmo assumindo que o leitor já é Android developer o autor colocu os códigos completos no livro (AIDL não).
Vlw
Comentários Facebook