BroadcastReceiver no Android, Executando Tarefas no Background
(20277) (14)
CategoriasAndroid, Design, Protótipo
AutorVinícius Thiengo
Vídeo aulas186
Tempo15 horas
ExercíciosSim
CertificadoSim
CategoriaEngenharia de Software
Autor(es)Vlad Khononov
EditoraAlta Books
Edição1ª
Ano2024
Páginas320
Tudo bem?
Na vídeo aula acima vamos passo a passo ao estudo de uma das APIs que mais perderam "força" ao longo da evolução do Android e da chegada de novas regras de negócio. Porém continua sendo uma importante API: BroadcastReceiver.
Se você ainda não conhece o termo broadcast, basicamente ele significa, na TI: transmissão para todos.
Sendo assim, não é difícil imaginar que um objeto do tipo BroadcastReceiver (RecebedorTransmissao - eu sei, a tradução não ficou nada legal) é basicamente uma entidade configurada para receber informações.
No caso do Android é para:
- Receber informações das quais ela foi registrada, a entidade BroadcastReceiver. Podendo ser informações, mensagens, de outros aplicativos ou do sistema Android.
- E também para enviar informações em modo broadcast.
A API BroadcastReceiver é muito similar a um trigger, gatilho, de banco de dados, isso devido a limitação de 10 segundos que temos de processamento quando a API é acionada e o método onReceiver() é invocado com os dados em mensagem broadcast (na vídeo aula você entenderá muito bem sobre isso).
Ou seja, somente se você tiver certeza que o algoritmo que será executado a partir de BroadcastReceiver.onReceiver() não chegará, em hipótese alguma, aos temidos 10 segundos de execução.
Somente nesta circunstância é que recomendo não utilizar um objeto BroadcastReceiver como um mero acionador de alguma outra entidade mais completa para execução, um Service, por exemplo.
Mas já lhe adianto: apesar de a API BroadcastReceiver não ter sido desenvolvida somente para algoritmos que executam em background, ela é comumente utilizada para aciona-los e esses algoritmos tendem a ter um tempo de processamento não consistente (não conhecido), ou seja, muitas vezes é arriscado deixar o algoritmo principal de execução no onReceiver().
A configuração de um BroadcastReceiver pode ser dinâmica:
public class MainActivity extends AppCompatActivity {
private CustomBroadcastReceiver customBroadcast;
@Override
protected void onCreate( Bundle savedInstanceState ) {
super.onCreate( savedInstanceState );
customBroadcast = new CustomBroadcastReceiver();
IntentFilter intentFilter = new IntentFilter( Intent.ACTION_AIRPLANE_MODE_CHANGED );
registerReceiver( customBroadcast, intentFilter );
...
}
@Override
protected void onDestroy() {
unregisterReceiver( customBroadcast );
super.onDestroy();
}
}
Ou estática:
<?xml version="1.0" encoding="utf-8"?>
<manifest
...>
...
<application
...>
<receiver
android:name=".CustomBroadcastReceiver"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.ACTION_AIRPLANE_MODE_CHANGED"/>
</intent-filter>
</receiver>
...
</application>
</manifest>
Em ambas as definições têm duas entidades que são extremamente importantes para o funcionamento de mensagens broadcast: Intent e IntentFilter.
São elas que permitem ao sistema Android saber quais são os aplicativos que devem receber, por exemplo, uma mensagem broadcast disparada pelo app XYZ.
Você deve ter notado que a API BroadcastReceiver nos permite ter contato com as mensagens públicas do mundo exterior ao nosso app, certo? Para mensagens internas, podemos utilizar o irmão mais novo de BroadcastReceiver, o LocalBroadcastManager.
E é isso, a vídeo aula está bem completa e eu fortemente recomendo que você também estude pelos links oficiais indicados em "Fontes".
Antes de finalizar, vou deixar a seguir alguns links de outros conteúdos do Blog, 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 interesse 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, liberados semanalmente.
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. 1: o link para download do projeto apresentado em vídeo se encontra logo abaixo no artigo, na seção "Download".
Obs. 2: foram inevitáveis os erros com o terceiro objeto BroadcastReceiver na vídeo aula, eu preferi não remove-los pois foram corrigidos no vídeo mesmo.
Abraço.
Eclipse IDE vs Android Studio IDE
Apesar de o conteúdo da vídeo aula acima estar utilizando o Eclipse IDE 😱, 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 😁.
Ou seja, independente da linguagem oficial (Java, Kotlin, C ou C++), IDE ou framework que você esteja utilizando, o conteúdo acima é ainda muito útil.
AndroidX
Apesar do conteúdo sobre BroadcastReceiver ainda estar atual e ser um diferencial 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.
Fontes
BroadcastReceiver - documentação oficial Android
<receiver> - documentação oficial Android
BroadcastReceiver declared in manifest is not receiving the Broadcast
Comentários Facebook