У меня есть пользовательский элемент управления музыкальным проигрывателем, который запускает службу по нажатию кнопки воспроизведения и регистрирует BroadcastReceiver.
Служба воспроизводит музыку и передает сведения о музыке, которые я использую в элементе управления музыкального проигрывателя для обновления пользовательского интерфейса.
public class MusicPlayer extends ViewFlipper implements OnClickListener
{
частный BroadcastReceiver broadcastReceiver;
MusicPlayer(Context context, AttributeSet attrs)
{
//inflate the layout
}
public void onClick(View v)
{
if(v.getId() == R.id.musicplayerbtn)
{
// DO some work
// register receiver
broadcastReceiver = new BroadcastReceiver()
{
@Override
public void onReceive(Context context, Intent serviceIntent)
{
updatePlayer(serviceIntent);
}
};
// Register receiver
getContext().registerReceiver(broadcastReceiver, new IntentFilter(MusicService.BROADCAST));
//Start service
}
}
}
Мое приложение имеет несколько экранов, и я просто подключаю этот элемент управления на этих экранах. При переходе от одного занятия к другому музыкальный проигрыватель на макете первого занятия должен понимать, что он больше не виден, и отменять регистрацию BroadcastReceiver.
Где / как мне отменить регистрацию BroadcastReceiver в пользовательском элементе управления? Я бы предпочел не отменять регистрацию в методе Activity onPause ().