我有一个自定义音乐播放器控件,单击播放按钮启动服务并注册BroadcastReceiver。 该服务播放音乐并播放音乐细节,我在音乐播放器控件中使用它来更新UI。
public class MusicPlayer extends ViewFlipper implements OnClickListener
{ private 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
}
}
}
我的应用有多个屏幕,我只是在这些屏幕上插入此控件。当从一个Activity导航到另一个Activity时,第一个Activity的布局上的音乐播放器需要理解它不再可见并取消注册BroadcastReceiver。
在哪里/如何在自定义控件中取消注册BroadcastReceiver?我不希望在Activity onPause()方法中取消注册它。
答案 0 :(得分:0)
您应该使用onDestroy
方法。