Java 检测日期是否已更改的最有效方法是什么?

Java 检测日期是否已更改的最有效方法是什么?,java,android,date,broadcastreceiver,alarmmanager,Java,Android,Date,Broadcastreceiver,Alarmmanager,我想做一个跑步教练应用程序。对于我所做的一些事情,我需要知道一天何时过去,这意味着日期已经改变(24:00) 以下是一些选项: 当然,我可以随时检查当前时间是否小于24:00,这是没有效率的 我还看到,我可以使用意图过滤器-动作\u日期\u更改-以及一个广播接收器,它将收听此意图,我将知道日期何时更改。 然而,我认为这不是最有效的方法,因为它总是监听,可能需要一些电池和CPU。Android可能在提高广播接收机的效率方面做得很好,但我仍然怀疑它是否适合我的需要 使用报警管理器 哪一个是最好的

我想做一个跑步教练应用程序。对于我所做的一些事情,我需要知道一天何时过去,这意味着日期已经改变(24:00)

以下是一些选项:

  • 当然,我可以随时检查当前时间是否小于24:00,这是没有效率的
  • 我还看到,我可以使用意图过滤器-
    动作\u日期\u更改
    -以及一个广播接收器,它将收听此意图,我将知道日期何时更改。 然而,我认为这不是最有效的方法,因为它总是监听,可能需要一些电池和CPU。Android可能在提高广播接收机的效率方面做得很好,但我仍然怀疑它是否适合我的需要
  • 使用报警管理器

哪一个是最好的,还是有不同的方法?您有什么建议?为什么?

如果您需要在每次00:00时采取行动,则必须使用AlarmManager和BroadcastReceiver。然后,您就可以在接收方的onReceive()方法中执行任何必须执行的操作。哦,顺便说一句,广播接收器是最有效的方法,因为它们只在onReceive()方法期间使设备保持活动状态

使用AlarmManager将重复呼叫设置为每天00:00时onReceive。如果你需要一个例子,请在评论中告诉我


除此之外,如果你每天都不需要采取任何行动,你只需检查应用程序本身。您始终可以保存上次在SharedReferences中打开应用的时间。

如果您需要在每次00:00时执行操作,则必须使用AlarmManager和BroadcastReceiver。然后,您就可以在接收方的onReceive()方法中执行任何必须执行的操作。哦,顺便说一句,广播接收器是最有效的方法,因为它们只在onReceive()方法期间使设备保持活动状态

使用AlarmManager将重复呼叫设置为每天00:00时onReceive。如果你需要一个例子,请在评论中告诉我


除此之外,如果你每天都不需要采取任何行动,你只需检查应用程序本身。您始终可以保存上次将应用程序打开到SharedReferences中的时间。

您需要知道日期何时更改,或者如果日期与上次使用应用程序的时间不同,您需要知道何时运行应用程序?我是此论坛的新手,仅供参考,Stack Overflow不是一个论坛。这是一个问答网站,所以它的工作方式不同。为了最大限度地利用SO,我建议采用第一种方法,另请参见。他们向系统注册自己,系统只会通知他们注册的操作。因此,这样做不会浪费CPU周期和电池(除非您注册的操作消耗电池本身,例如查找当前位置)。我如何添加更多有帮助的详细信息?这个问题为iteslf说话——检测日期是否发生变化的最有效方法是什么,我想可能有1-2种最有效的方法。无论如何,我需要知道日期何时一直发生变化,但如果应用程序只是在运行(在后台或前台),我想知道如何做也很好。你还需要什么详细信息?你是否需要知道日期何时更改,或者如果日期与上次使用应用的时间不同,你是否需要知道何时运行你的应用?仅供参考,Stack Overflow不是一个论坛。这是一个问答网站,所以它的工作方式不同。为了最大限度地利用SO,我建议采用第一种方法,另请参见。他们向系统注册自己,系统只会通知他们注册的操作。因此,这样做不会浪费CPU周期和电池(除非您注册的操作消耗电池本身,例如查找当前位置)。我如何添加更多有帮助的详细信息?这个问题为iteslf说话——检测日期是否发生变化的最有效方法是什么,我想可能有1-2种最有效的方法。无论如何,我需要知道日期何时一直发生变化,但如果应用程序只是在运行(在后台或前台),我想知道如何做也很好。您还需要什么详细信息?谢谢您的回答,您能否给出一些代码,说明如何执行此操作,以及如何在AlarmManager和BroadcastReceiver之间连接?此外,当应用程序在前台或后台运行时,AlarmManager是否有可能错过时间更改,也就是说,当00:00过去/到达时,AlarmManager不会通知?感谢您的回答,您能否给出一些代码,说明如何执行此操作,以及如何在AlarmManager和BroadcastReceiver之间连接?此外,当应用程序在前台或后台运行时,AlarmManager是否有可能错过时间更改,也就是说,当00:00过去/到达时,不会通知?