2014-01-26 82 views
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內的多個鬧鐘?

回答

0

由於WakefulIntentService不支持多個偵聽器,我如何才能在WakefulIntentService中簡單管理多個警報?

首先,請閱讀the README section on asking questions,以便將來在您的StackOverflow問題上獲得正確的標記。

然後,按照the "Basic Usage" instructions。我的幫助代碼AlarmManager是爲相當簡單的場景設計的,但您不需要使用該代碼。

+0

感謝您的響應,但沒有將監聽器添加到xml文件,它不起作用。我無法找到說明其他方式的確切部分。 –

+0

在基本用法中,它說:「接下來,創建一個實現WakefulIntentService.AlarmListener接口的類。除了接口方法實現之外,該類還需要一個無參數的公共構造函數。」因此,我無法真正將它用於我的案例。 而我的問題是,因爲我不能用在我的情況下,我還應該使用什麼? –

+0

@SarpKaya:「在基本用法上,它說」 - 不,它不。這是在「警報使用」標題下。我用文字和超鏈接指出了「基本用法」標題。 – CommonsWare