无法将WakefulIntentService的子类实例化为接收器

时间:2011-09-29 11:50:38

标签: android commonsware-cwac

我正在使用WakefulIntentService和AlarmManager实现数据记录器服务。但是,我无法实例化接收器。这是我在尝试运行应用程序时得到的内容。

  

ERROR / 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 :(得分:0)

WakefulLoggerIntentServiceService。它不是BroadcastReceiver

要使用WakefulIntentService,您需要一个由闹钟触发的BroadcastReceiver,然后拨打sendWakefulWork()来启动WakefulLoggerIntentService

此外,您需要将WakefulLoggerIntentService作为<service>注册在清单中,而不是<receiver>