在自定义控件中取消注册广播接收器的位置

时间:2012-03-08 21:15:25

标签: android custom-controls broadcastreceiver

我有一个自定义音乐播放器控件,单击播放按钮启动服务并注册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()方法中取消注册它。

1 个答案:

答案 0 :(得分:0)

您应该使用onDestroy方法。