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分鐘過去)
你可以給我提示我是什麼做錯了?不幸的是,通過閱讀關於同一主題的幾個問題並沒有幫助解決問題。
您是否在清單中添加了您的服務? – Opiatefuchs
是的,我添加了它。 – Markus