2011-09-29 48 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

這是缺失的鏈接。謝謝! –

相關問題