Где отменить регистрацию приемника вещания в пользовательском элементе управления - PullRequest
0 голосов
/ 09 марта 2012

У меня есть пользовательский элемент управления музыкальным проигрывателем, который запускает службу по нажатию кнопки воспроизведения и регистрирует 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 ().

1 Ответ

0 голосов
/ 09 марта 2012

Вы должны сделать это методом onDestroy.

...