Junior
O que é um BroadcastReceiver no Android?
sobes.tech IA
Resposta da IA
Este é um componente que responde a mensagens broadcast do sistema ou do utilizador. Não possui interface de utilizador e destina-se a executar operações em segundo plano em resposta a eventos específicos.
Características principais:
- Responde a intenções (Intents) com uma ação (action) específica.
- Componente de curta duração, o seu método
onReceive()é executado durante um curto período. - Não é destinado a operações longas. Se for necessária uma operação prolongada, deve-se iniciar um Service a partir de
onReceive(). - Pode ser registado de forma estática no manifesto ou dinamicamente no código.
Exemplos de utilização:
- Responder a alterações no estado da rede (
android.net.conn.CONNECTIVITY_CHANGE). - Responder ao arranque do sistema (
android.intent.action.BOOT_COMPLETED). - Processar SMS recebidos.
- Receber mensagens personalizadas enviadas por outros componentes da aplicação ou por outras aplicações.
Registo no manifesto:
<receiver android:name=".MyBroadcastReceiver"
android:exported="true"> // exported="true" para que outras aplicações possam enviar intents
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>
Registo no código:
// Em uma Activity ou Service
IntentFilter filter = new IntentFilter("com.example.MY_CUSTOM_ACTION");
MyBroadcastReceiver receiver = new MyBroadcastReceiver();
registerReceiver(receiver, filter);
// Em onDestroy() ou onStop() - é importante cancelar o registo!
unregisterReceiver(receiver);
Classe BroadcastReceiver:
public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// Aqui é executado o código ao receber o Intent
// Por exemplo:
if ("com.example.MY_CUSTOM_ACTION".equals(intent.getAction())) {
Toast.makeText(context, "Ação personalizada recebida!", Toast.LENGTH_SHORT).show();
}
}
}