我搜索了很多地方,但找不到关于如何在每天的特定时间使用 AlarmManager 启动服务(或者如果那不可能,那么是活动)的清晰顺序解释?
我想注册几个这样的警报并触发它们应该会导致服务启动。我将在服务中有一小段代码,然后可以执行,我可以永久完成服务......
Calendar cal = Calendar.getInstance();
Calendar cur_cal = Calendar.getInstance();
cur_cal.setTimeInMillis(System.currentTimeMillis());
Date date = new Date(cur_cal.get(Calendar.YEAR), cur_cal.get(Calendar.MONTH), cur_cal.get(Calendar.DATE), 16, 45);
cal.setTime(date);
Intent intent = new Intent(ProfileList.this, ActivateOnTime.class);
intent.putExtra("profile_id", 2);
PendingIntent pintent = PendingIntent.getService(ProfileList.this, 0, intent, 0);
AlarmManager alarm = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
alarm.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pintent);
System.out.println("The alarm set!!");
我尝试使用此代码在 4.45 激活警报...但它没有触发服务...我必须保持进程运行吗?我做错什么了吗???
还有一件事,如果我使用以下代码,我的服务将得到完美执行:
long firstTime = SystemClock.elapsedRealtime();
alarm.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, firstTime, 30*1000,pintent);