2014-06-20 62 views
0

我想在每天的特定時間(即上午11點)使用AlarmManager運行服務。但由於某種原因,我的代碼無法正常工作。AlarmManager服務調用不起作用

AlarmManager

public class ScheduleHelper { 

    /** 
    * @param context 
    * @param intent 
    * @param hourOfDay 
    */ 
    public static void scheduleDayly(Context context){ 
     Calendar cal = new GregorianCalendar(); 
     cal.set(Calendar.HOUR_OF_DAY, 11); 
     cal.set(Calendar.MINUTE, 0); 
     cal.set(Calendar.SECOND, 0); 

     Intent intent = new Intent(context, NotificationService.class); 
     schedule(context, intent, cal, AlarmManager.INTERVAL_DAY, 1337); 
    } 

    /** 
    * @param context 
    * @param intent 
    * @param calendar 
    */ 
    private static void schedule(Context context, Intent intent, 
      Calendar calendar, long alarmManagerTimeInterval, int requestCode) { 
     PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 
       requestCode, intent, 0); 

     Toast.makeText(context, "Running in " + (System.currentTimeMillis()-calendar.getTimeInMillis()) + " ms", Toast.LENGTH_LONG).show(); 

     AlarmManager alarmManager = (AlarmManager) context 
       .getSystemService(Context.ALARM_SERVICE); 
     alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, 
       calendar.getTimeInMillis(), alarmManagerTimeInterval, 
       pendingIntent); 
    } 

} 

NotificationService

public class NotificationService extends Service { 

@Override 
public IBinder onBind(Intent intent) { 
    return null; 
} 

@Override 
public void onCreate() { 
    Log.i("Service", "service created"); 
    super.onCreate(); 
} 

@Override 
public void onStart(Intent intent, int startId) { 
    Log.i("Service", "service started"); 

      //Todo: create notification 
    super.onStart(intent, startId); 
} 

@Override 
public void onDestroy() { 
    super.onDestroy(); 
    Log.i("Service", "service destroyed"); 
} 

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    Log.i("Service", "service start command received"); 
    return Service.START_STICKY; 
} 
} 

根據logcat的服務,從未創建或啓動(我也試過,現在同樣的結果設置日曆5分鐘過去)

你可以給我提示我是什麼做錯了?不幸的是,通過閱讀關於同一主題的幾個問題並沒有幫助解決問題。

+0

您是否在清單中添加了您的服務? – Opiatefuchs

+0

是的,我添加了它。 – Markus

回答

0

使用服務與掛起的意圖,用途:

PendingIntent pendingIntent = PendingIntent.getService(context, 
      requestCode, intent, 0); 

這是當你要廣播從待定意向的東西。

PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 
       requestCode, intent, 0);