Duas escolhas
1) Se você quiser ler Transmissão somente quando a Atividade estiver visível,
registerReceiver(...
) dentro onStart()
e unregisterReceiver(...)
dentroonStop()
2) Se você quiser ler Transmissão, mesmo que a Atividade esteja em segundo plano,
registerReceiver(...)
dentro onCreate(...)
e unregisterReceiver(...)
dentroonDestroy()
Bônus:
Se você é preguiçoso
Se você não deseja escrever um código padrão para registrar e cancelar o registro de um BroadcastReceiver repetidamente em cada Atividade,
- Criar uma atividade abstrata
- Escreva o código padrão na Atividade
- Deixe a implementação como métodos abstratos
Aqui está o trecho de código:
Atividade abstrata
public abstract class BasicActivity extends AppCompatActivity {
private BroadcastReceiver broadcastReceiver;
private IntentFilter filter;
private static final String TAG = "BasicActivity";
/**********************************************************************
* Boilerplate code
**********************************************************************/
@Override
public void onCreate(Bundle sis){
super.onCreate(sis);
broadcastReceiver = getBroadcastReceiver();
filter = getFilter();
}
@Override
public void onStart(){
super.onStart();
register();
}
@Override
public void onStop(){
super.onStop();
unregister();
}
private void register(){
registerReceiver(broadcastReceiver,filter);
}
private void unregister(){
unregisterReceiver(broadcastReceiver);
}
/**********************************************************************
* Abstract methods
**********************************************************************/
public abstract BroadcastReceiver getBroadcastReceiver();
public abstract IntentFilter getFilter();
}
Usando essa abordagem, você pode escrever mais códigos padrão, como escrever animações comuns, vincular a um serviço etc.
Veja o código completo:
AQUI