runOnUiThread, Atalho de Acesso a Thread Principal no Android
(8779) (6)
CategoriasAndroid, Design, Protótipo
AutorVinícius Thiengo
Vídeo aulas186
Tempo15 horas
ExercíciosSim
CertificadoSim
CategoriaEngenharia de Software
Autor(es)Kent Beck
EditoraNovatec
Edição1ª
Ano2024
Páginas112
Tudo bem?
Na vídeo aula acima nós vamos, passo a passo em um projeto Android de exemplo, estudar e praticar a API (ou método) runOnUiThread().
Este é um dos conteúdos que qualquer profissional Android, com experiência em ao menos um aplicativo em produção, julgaria importante.
Eu trato a API runOnUiThread como um atalho, seguro e recomendado, de acesso à thread principal de um aplicativo Android.
Mas antes de continuar com este texto, que servirá de auxílio ao que é apresentado em vídeo aula, confesso que é muito importante que você primeiro estude e pratique, por completo, o assunto "Thread Principal no Android", conteúdo que discuto em: Entendendo a Thread Principal de Um App Android.
Ai você pergunta: Ok, Thiengo. Mas por que devo primeiro consumir este artigo específico sobre a thread principal no Android? 🤔
Em resumo, sem rodeios: porque é o conteúdo pré-requisito para entender a runOnUiThread.
Se você está aqui, neste artigo e vídeo aula em específico, tem grandes chances de você estar apenas iniciando no mundo do desenvolvimento Android, certo?
Logo, pular etapas agora será certamente prejudicial pouco a frente em sua jornada como dev. Sendo assim, a partir do próximo parágrafo, já vou assumir que você entende por completo o assunto thread principal.
Voltando à runOnUiThread, está é um atalho ante ao uso de uma instância de Handler, consequentemente temos de utilizar muito menos linhas de código para conseguir acesso a thread principal e, muito provavelmente essa será a necessidade, atualizar algum componente visual, ou vários, dependente do algoritmo que estava executando em background.
Veja a seguir um simples código de exemplo da runOnUiThread sendo utilizada:
public class MainActivity
extends AppCompatActivity { /* AppCompatActivity é subclasse de Activity. */
@Override
protected void onCreate( Bundle savedInstanceState ){
...
new Thread( new Runnable() {
@Override
public void run() {
final int result;
/*
* Processamento pesado em thread secundária,
* fora da thread principal.
* */
...
runOnUiThread( new Runnable() {
@Override
public void run() {
/*
* textViewResult é um TextView, que
* pode ser atualizado somente dentro
* da thread principal, algo facilmente
* atingido com o método Activity
* runOnUiThread().
* */
textViewResult.setText(
String.format( "%d", result )
);
}
});
}
}).start();
}
...
}
É, eu confesso que não faria isso em nenhum dos projetos oficiais que eu estivesse trabalhando, projetos que iriam a produção, disponibilizados na Google Play Store. Isso, pois eu não curto o trabalho com instâncias inline, o que estou fazendo com a classe Thread, e com instâncias anônimas, o que estou fazendo com a Interface Runnable.
Prefiro colocar cada classe em seu respectivo pacote e preferencialmente fora do contexto de alguma outra classe, digo, fora do contexto estrutural, algo que ocorre com instâncias inline, instâncias anônimas e classes internas, como o conhecido ViewHolder em RecyclerView.Adapter.
Por que falei sobre isso, sobre codificação organizada?
Mais para atrair a sua atenção, novamente, para um dos principais ganhos no uso da runOnUiThread: código mais organizado, pois o número de linhas, o algoritmo em geral, para acesso à thread principal é menor e não perde em nada na leitura dele.
Um ponto importante também abordado em vídeo aula e que vejo necessidade de ênfase aqui é que a API runOnUiThread é na verdade parte da classe Activity e não da classe Context, logo, preste atenção no tipo de parâmetro que você define em métodos e construtores quando houver a necessidade de uso da runOnUiThread, pois é comum nós, em desenvolvimento, trabalharmos com o tipo Context diretamente.
Para finalizar sobre a runOnUiThread:
Muitas das APIs de comunicação remota no Android já têm o próprio método de acesso a thread principal, ou seja, para essas APIs não será preciso o uso da runOnUiThread ou de qualquer outra API que já não seja a da própria biblioteca de comunicação remota em uso.
Antes de finalizar, vou deixar abaixo alguns links de outros artigos do Blog, também com vídeos, que lhe colocarão em dia com o que há de atual no mundo do desenvolvimento Android:
- Kotlin Android, Entendendo e Primeiro Projeto;
- Android Studio: Instalação, Configuração e Otimização;
- Android Mobile-Commerce, Apresentação e Protótipo do Projeto.
E caso você tenha o desejo de aprender a criar apps Android, ou evoluir nesta área, também com o conteúdo gratuito do Blog, então não deixe de acessar a lista de estudos em: Estudando Android - Lista de Conteúdos do Blog.
Não esqueça de se inscrever 📫 na lista de e-mails do Blog para receber os conteúdos Android exclusivos, liberados semanalmente... e também em suas versões em PDF (versões em PDF são liberadas somente aos inscritos da lista de e-mails).
Se inscreva também no canal do Blog no YouTube para acompanhar as últimas novidades disponibilizadas em vídeo aula.
Surgindo dúvidas ou dicas, pode colocar abaixo na área de comentários que logo eu lhe retorno.
Obs. : o link para download do projeto apresentado em vídeo se encontra logo abaixo no artigo, na seção "Download".
Abraço.
Eclipse IDE vs Android Studio IDE
Apesar de o conteúdo da vídeo aula deste artigo estar utilizando o IDE Eclipse 😱, tudo que é apresentado, tanto a parte teórica quanto a parte prática, é ainda válido nos dias de hoje com o desenvolvimento Android utilizando o Android Studio IDE 😁.
Ou seja, independente da linguagem oficial (Java, Kotlin, C ou C++), IDE ou framework que você esteja utilizando, o conteúdo acima é ainda muito válido.
AndroidX
Apesar do conteúdo sobre a API runOnUiThread() ainda estar atual e ser de grande importância para qualquer nível de desenvolvedor Android.
Apesar disso eu também recomendo, assim que finalizado o projeto em sua própria instalação de IDE, que você o migre para o AndroidX.
Algo que pode ser feito com poucos cliques, como apresentado no tutorial a seguir: Migrar para o AndroidX.
Fonte
runOnUiThread() - documentação oficial Android
Comentários Facebook