Невозможно создать экземпляр подкласса WakefulIntentService в качестве получателя. - PullRequest
0 голосов
/ 29 сентября 2011

Я внедряю службу регистрации данных, используя WakefulIntentService и AlarmManager.У меня проблемы с созданием экземпляра получателя.Вот что я получаю, когда пытаюсь запустить приложение.

ОШИБКА / AndroidRuntime (3181): java.lang.RuntimeException: Невозможно создать экземпляр получателя my.package.WakefulLoggerIntentService: java.lang.InstantiationException: my.package.WakefulLoggerIntentService

Вот соответствующие части класса обслуживания:

public class WakefulLoggerIntentService extends WakefulIntentService
{
   public WakefulLoggerIntentService()
   {
      super("WakefulLoggerIntentService");
   }

   @Override
   protected void doWakefulWork( Intent intent )
   {
      // Do the actual data logging.
   }
}

Я добавил элемент получателя в свой манифест:

<receiver android:name=".WakefulLoggerIntentService">
</receiver>

А вот часть, которая использует AlarmManager для планирования событий регистрации:

  Intent i = new Intent(getApplicationContext(), WakefulLoggerIntentService.class);
  PendingIntent pi = PendingIntent.getBroadcast(getApplicationContext(), 0, i, 0);
  AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
  am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime(), 30000, pi);

Чего мне не хватает?

1 Ответ

0 голосов
/ 29 сентября 2011

WakefulLoggerIntentService является Service.Это не BroadcastReceiver.

Чтобы использовать WakefulIntentService, вам нужен BroadcastReceiver, который срабатывает по тревоге и, в свою очередь, вызывает sendWakefulWork(), чтобы сбросить ваш WakefulLoggerIntentService.

Кроме того, вам необходимо зарегистрировать ваш WakefulLoggerIntentService в манифесте как <service>, а не <receiver>.

...