Где можно отменить регистрацию BroadcastReceiver (в службе)?

У меня есть BroadcastReceiver, который я создаю динамически в Службе. Его цель - определить, когда было отправлено SMS. Он работает, как и ожидалось.

Моя проблема в том, что я получаю ошибку, говорящую "Намерение получателя утечка". Пропускаю ли я звонок на unregisterReceiver()?

Я делаю вызов на unregisterReceiver() в onDestroy(). Наверное, это неправильно. Где мне следует отменить регистрацию приемника?

Код...

public class MyService extends Service {
    BroadcastReceiver brSms;

    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public void onCreate() {
    }

    @Override
    public void onStart(Intent intent, int startid) {
        //Define the receiver
        brSms = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                //Do some  stuff
            };
        }

        registerReceiver(brSms, new IntentFilter(SENT_SMS_ACTION));
    }

    @Override
    public void onDestroy() {
        unregisterReceiver(brSms);
        Toast.makeText(this, "onDestroy has been called", Toast.LENGTH_SHORT).show();
    }
}//end of MyService
13
задан Darshan Rivka Whittle 2 July 2012 в 07:27
поделиться