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



我有一个自定义的音乐播放器控件,单击播放按钮即可启动服务并注册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方法中执行此操作。

最新更新