我正在使用WakefulIntentService和AlarmManager实现一个datalogger服务。不过,我在实例化接收器时遇到了麻烦。这是我试着运行这个应用程序时得到的。
错误/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);
我遗漏了什么?
发布于 2011-09-29 04:23:23
WakefulLoggerIntentService
是Service
。它不是BroadcastReceiver
。
要使用WakefulIntentService
,您需要一个由警报触发的BroadcastReceiver
,然后调用sendWakefulWork()
来启动WakefulLoggerIntentService
。
另外,您需要将您的WakefulLoggerIntentService
注册为<service>
,而不是<receiver>
。
https://stackoverflow.com/questions/7596898
复制