0

我正在使用 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);

我错过了什么?

4

1 回答 1

0

WakefulLoggerIntentService是一个Service。它不是一个BroadcastReceiver.

要使用. WakefulIntentService_ BroadcastReceiver_sendWakefulWork()WakefulLoggerIntentService

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

于 2011-09-29T12:23:23.447 回答