我有一个自定义的音乐播放器控件,单击播放按钮即可启动服务并注册BroadcastReceiver。该服务播放音乐并广播音乐细节,我在音乐播放器控件中使用这些细节来更新UI。
public class MusicPlayer extends ViewFlipper implements OnClickListener
{私人广播接收机广播接收机;
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()方法中注销它。
您应该在onDestroy
方法中执行此操作。