我想为我的应用创建一个调度程序。我目前的想法是创建一个后台服务,它在启动时启动并监听日期和时间。这会触发我的申请。但我猜这不是最有效的方法。我用Google搜索广泛,没有提出任何不同的东西。有没有比创建服务更有效的方法?
[编辑] 的
让我的问题更清晰。我想做这样的事情。
假设我想在每周一上午10:00运行该应用程序,我将如何进行此操作?我炮制的方法还是更高效的方法?
答案 0 :(得分:1)
您需要的只是系统的AlarmManager和BroadcastReceiver一起启动IntentService。
更新:第二次阅读时,触发我的应用是什么意思?我假设它是非交互式的,但如果它是交互式的,你可以在BroadcastReceiver的帮助下启动你的Activity;那时不需要IntentService。为您节省时间监控时间。
更新您必须问自己的一个核心问题是,我是否要唤醒设备,以便我的{app,service}正好在该时间点运行,或者设备被用户唤醒后,如果“另一个星期一上午10点”已经过去,可以立即运行吗?
无论该问题的答案如何,您都将使用系统的AlarmManager设置重复警报,可以使用setRepeating()
或setInexactRepeating()
,也可以使用RTC
或{{ 1}}。 RTC_WAKEUP
是下周一上午10点的时间增量,triggerAtMillis
是一周的毫秒数。
就是这样。
答案 1 :(得分:-1)
我认为你需要修改代码的时间表.. 尝试使用此代码来安排特定功能..
Timer mTimer = new Timer();
TimerTask mTimerTask = new TimerTask() {
@Override
public void run() {
/*your code here..*/
}
};
mTimer.scheduleAtFixedRate(mTimerTask, getTomorrowMorning2AM(), 1000*60*60*24);
}
private static java.util.Date getTomorrowMorning2AM(){
Calendar c = Calendar.getInstance();
java.util.Date date2am = c.getTime();
date2am.setHours(2);
date2am.setMinutes(0);
return date2am;
}