Android 时间/日期更改侦听器

Android 时间/日期更改侦听器,android,alarmmanager,Android,Alarmmanager,我想制作一个时间或日期监听器,例如每天早上9点调用一个活动。我不知道最好的方法是什么?我知道我可以使用报警管理器,但我不知道如何使其重复 有人知道吗?事先非常感谢 欢呼声: 我知道我可以使用报警管理器,但我不知道如何使其重复 使用并指定以下重复间隔: 上述代码将设置一个警报,该警报将从现在起24小时关闭,此后每隔24小时关闭一次。要使其在上午9点开始,请使用RTC替换已用的实时,并将SystemClock.elapsedRealtime+AlarmManager.INTERVAL\u DAY替换

我想制作一个时间或日期监听器,例如每天早上9点调用一个活动。我不知道最好的方法是什么?我知道我可以使用报警管理器,但我不知道如何使其重复

有人知道吗?事先非常感谢

欢呼声:

我知道我可以使用报警管理器,但我不知道如何使其重复

使用并指定以下重复间隔:

上述代码将设置一个警报,该警报将从现在起24小时关闭,此后每隔24小时关闭一次。要使其在上午9点开始,请使用RTC替换已用的实时,并将SystemClock.elapsedRealtime+AlarmManager.INTERVAL\u DAY替换为今天或明天的上午9点,例如通过日历对象

我知道我可以使用报警管理器,但我不知道如何使其重复

使用并指定以下重复间隔:


上述代码将设置一个警报,该警报将从现在起24小时关闭,此后每隔24小时关闭一次。要让它在上午9点开始,请将“已用实时”替换为RTC,并将SystemClock.elapsedRealtime+AlarmManager.INTERVAL\u DAY替换为今天或明天的上午9点,例如通过日历对象。

我想他已经为您提供了所需的一切。因此,如果我这样设置:AlarmManager am=AlarmManager getSystemServiceALARM\u服务;am.setRepeatingtype、setTimeeveryDay9、INTERVAL\u DAY、myActivity.class;那是什么类型的呢?其余的都有道理:提前谢谢哇,非常感谢,你是明星:我会试试,我相信它会奏效的。另一个问题是,如果我只是在主活动类中应用这个方法,或者我应该让BroadcastServiceReceiver类调用这个包含这个方法的类,那么这个方法有效吗?抱歉,如果我的问题听起来很傻,我刚刚开始学习android。@user1163454:由于警报计划在重新启动时被取消,一种常见的模式是在应用程序首次运行时,当设备通过启动完成的接收器重新启动时,计划警报,如果你确定警报没有发生太久,因为用户使用强制停止来强制终止你的应用程序。如果是每天早上9点报警,您只需在每次运行应用程序时重新安排报警时间,再加上重新启动,即可将第一次和第三次合并。非常感谢。我知道我在这里很烦人,但如果系统重新启动,您如何确定未发生报警,还有什么方法可以跟踪它吗?我应该使用数据库来跟踪所有成功警报及其日期吗?我想他已经给了你所有你需要的信息。所以如果我这样设置:AlarmManager am=AlarmManager getSystemServiceALARM\u服务;am.setRepeatingtype、setTimeeveryDay9、INTERVAL\u DAY、myActivity.class;那是什么类型的呢?其余的都有道理:提前谢谢哇,非常感谢,你是明星:我会试试,我相信它会奏效的。另一个问题是,如果我只是在主活动类中应用这个方法,或者我应该让BroadcastServiceReceiver类调用这个包含这个方法的类,那么这个方法有效吗?抱歉,如果我的问题听起来很傻,我刚刚开始学习android。@user1163454:由于警报计划在重新启动时被取消,一种常见的模式是在应用程序首次运行时,当设备通过启动完成的接收器重新启动时,计划警报,如果你确定警报没有发生太久,因为用户使用强制停止来强制终止你的应用程序。如果是每天早上9点报警,您只需在每次运行应用程序时重新安排报警时间,再加上重新启动,即可将第一次和第三次合并。非常感谢。我知道我在这里很烦人,但如果系统重新启动,您如何确定未发生报警,是否有任何方法来跟踪它?我是否应该使用数据库来跟踪所有成功警报及其日期?
    static void scheduleAlarms(Context ctxt) {
      AlarmManager mgr=(AlarmManager)ctxt.getSystemService(Context.ALARM_SERVICE);
      Intent i=new Intent(ctxt, ScheduledService.class);
      PendingIntent pi=PendingIntent.getService(ctxt, 0, i, 0);

      mgr.setRepeating(AlarmManager.ELAPSED_REALTIME,
                       SystemClock.elapsedRealtime() + AlarmManager.INTERVAL_DAY,
                       AlarmManager.INTERVAL_DAY, pi);
  }