使用Alarm Manager启动服务

时间:2011-02-19 21:01:13

标签: android alarmmanager

我想要在每天凌晨3点执行一些代码。我已经阅读了Service Class Documentation,似乎我可以使用AlarmManager来触发一个意图(我认为是活动或服务?),然后,在那个意图中创建并在Android通知区域发布一条消息。

Calendar threeAM = Calendar.getInstance();
threeAM.set(Calendar.HOUR_OF_DAY,2);
threeAM.set(Calendar.MINUTE,0);
threeAM.set(Calendar.SECOND,0);
threeAM.set(Calendar.MILLISECOND,0);
AlarmManager alarmManager =
         (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent i = new Intent(context, myNotifier.class);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, threeAM.getTimeInMillis(),
        AlarmManager.INTERVAL_DAY, PendingIntent.getService(context, 1, i , 0));
Log.i("Service TEST", "Alarm set?" );

它在没有问题的情况下运行代码,但没有迹象表明已设置警报,并且活动未启动。我正在使用我知道有效的活动。我尝试用try / catch包装它,没有logcat ...

任何帮助将不胜感激! :)

2 个答案:

答案 0 :(得分:2)

我认为您应该注册您的活动以接收启动广播接收器,以便您的应用程序在操作系统启动完成时启动。这是链接http://www.androidenea.com/2009/09/starting-android-service-after-boot.html

我希望这会对你有所帮助。

在通知方面没有帮助,但是它会解决您的活动问题,而不是开始......

答案 1 :(得分:1)

您的代码仅在凌晨3点之前执行时才有效。否则,您将在过去设置闹钟。