添加计划到Android应用程序

时间:2013-01-30 11:43:51

标签: android android-service android-alarms

我想为我的应用创建一个调度程序。我目前的想法是创建一个后台服务,它在启动时启动并监听日期和时间。这会触发我的申请。但我猜这不是最有效的方法。我用Google搜索广泛,没有提出任何不同的东西。有没有比创建服务更有效的方法?

[编辑]

让我的问题更清晰。我想做这样的事情。

假设我想在每周一上午10:00运行该应用程序,我将如何进行此操作?我炮制的方法还是更高效的方法?

2 个答案:

答案 0 :(得分:1)

您需要的只是系统的AlarmManagerBroadcastReceiver一起启动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;
  }