0
我發現我有一個XML文件中指定監聽器,如:WakefulIntentService無法實例監聽
<WakefulIntentService listener="pathhere.MainListener" />
有這個問題是我不能添加多個監聽器,所以我必須用這種解決辦法的:
public MainListener(ListenerTable listenerType) {
this.listenerType = listenerType;
System.out.println("Listener Type is " + listenerType);
}
public void scheduleAlarms(AlarmManager mgr, PendingIntent pi, Context ctxt) {
System.out.println("Scheduling Alarm");
if (listenerType == ListenerTable.CELL) {
System.out.println("In scheduling cell");
mgr.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
SystemClock.elapsedRealtime() + 60000,
AlarmManager.INTERVAL_FIFTEEN_MINUTES/(15 * 60) * 10, pi);
} else if (listenerType == ListenerTable.WIFI) {
mgr.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
SystemClock.elapsedRealtime() + 60000,
AlarmManager.INTERVAL_FIFTEEN_MINUTES/(15 * 60) * 60, pi);
}
}
public void sendWakefulWork(Context ctxt) {
switch (listenerType) {
case CELL:
WakefulIntentService.sendWakefulWork(ctxt, CellService.class);
break;
case WIFI:
WakefulIntentService.sendWakefulWork(ctxt, WifiService.class);
break;
default:
//Do nothing
break;
}
}
而且我通過了日程告警在我的主要活動爲:
WakefulIntentService.scheduleAlarms(new MainListener(ListenerTable.CELL),this, false);
現在的問題是我得到它開始於一個運行時錯誤:
01-26 21:49:12.615: E/AndroidRuntime(8064): java.lang.RuntimeException: Unable to start receiver com.commonsware.cwac.wakeful.AlarmReceiver: java.lang.RuntimeException: Could not create instance of listener
我猜的原因是因爲它使用上面的XML文件並沒有通過任何方法來構造函數。由於WakefulIntentService
不支持多個聽衆,我怎樣才能簡單地管理WakefulIntentService
內的多個鬧鐘?
感謝您的響應,但沒有將監聽器添加到xml文件,它不起作用。我無法找到說明其他方式的確切部分。 –
在基本用法中,它說:「接下來,創建一個實現WakefulIntentService.AlarmListener接口的類。除了接口方法實現之外,該類還需要一個無參數的公共構造函數。」因此,我無法真正將它用於我的案例。 而我的問題是,因爲我不能用在我的情況下,我還應該使用什麼? –
@SarpKaya:「在基本用法上,它說」 - 不,它不。這是在「警報使用」標題下。我用文字和超鏈接指出了「基本用法」標題。 – CommonsWare