2011-09-29 65 views
0

我正在使用WakefulIntentService和AlarmManager实现数据记录器服务。但是,我在实例化接收器时遇到了问题。这是我在尝试运行应用程序时得到的结果。无法实例化WakefulIntentService的子类作为接收器

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); 

我缺少什么?

回答

0

WakefulLoggerIntentServiceService。这不是BroadcastReceiver

要使用WakefulIntentService,您需要一个由报警触发的BroadcastReceiver,然后调用sendWakefulWork()启动您的WakefulLoggerIntentService

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

+0

这是缺失的链接。谢谢! –

相关问题