【问题标题】:Get the previous (old) time after changing the time更改时间后获取上一个(旧)时间
【发布时间】:2014-04-03 06:50:07
【问题描述】:

我可以借助广播事件(ACTION_TIME_CHANGEDACTION_DATE_CHANGED)获取时间变化事件。

我需要在时间更改后获取上一个时间。例如,当前时间是 10:00。我将时间更改为 12:00。时间更改后,时间将更改为12:00,但我需要在时间更改时获取上一个时间(10:00)。

注意:可以通过任何其他应用程序或设置更改时间。

【问题讨论】:

  • 获取一个静态变量,每次更改时间值时,将前一个值设置为静态变量,然后在您想要的任何地方访问它。
  • 时间不会从我的应用程序中更改。它可以由任何其他应用程序更改。那我怎么能保持以前的时间(Before change time)

标签: android time android-broadcast


【解决方案1】:

也许我找到的解决方案可以帮助你:

(Is there a way to detect when the user has changed the clock time on their device?)

上述解决方案可以使用System.currentTimeMillis()在设备的BOOT上设置一个静态变量,并使用SystemClock.elapsedRealtime()求和。有了这笔钱,您就有了之前的时间。

但是有一个问题(我不知道这对你是否重要),如果用户不重新启动设备,那么你的差异将是== 0 并且你将无法在旧之间有这个差异和实际的System.currentTimeMillis()

【讨论】:

  • 它工作,好主意。我添加的一件事是通过计算旧时间和新时间之间的差异来调整“开始时间”(即您在启动时存储的时间),并在每次更改后添加到它,因此您将获得更新和正确的时间参考当您再次使用此方法时。
  • 这是一个不错的解决方案。但我有一个问题,TIME_SET 有时会在 BOOT_COMPLETE 之前收到。在android中为特定的启动会话提供一些系统ID会很好,但我找不到它。
【解决方案2】:

在更改定时任务时,只需将当前或旧时间毫秒存储在sharedpreferences 中,即您可以随时使用,即使应用程序不会自行堆叠

【讨论】:

  • 我的应用程序不会改变时间。它可以从任何其他应用程序或设置中更改。我怎样才能得到以前的时间..
  • 每当您收到此接收事件时,只需花费当前时间毫秒然后将其存储,我认为这是更改前的最后一次
  • 当我得到当前时间时,只会在更改时间后给出时间。它不会给出上一次(更改时间之前)
  • 那么我不知道伙计,如果你能得到,你可能需要对此进行一些研发,然后请告诉我。:)
猜你喜欢
  • 1970-01-01
  • 2012-06-18
  • 1970-01-01
  • 2021-01-19
  • 1970-01-01
  • 2023-03-21
  • 1970-01-01
  • 1970-01-01
  • 2021-06-12
相关资源
最近更新 更多