Java 安卓定时器在任何情况下都能工作

Java 安卓定时器在任何情况下都能工作,java,android,time,Java,Android,Time,我想做一个10分钟的计时器。但问题是,我不希望用户能够处理系统时间或关闭设备进行欺骗。 即使用户更改设备时间或关闭设备,是否有办法使用此计时器? 感谢您的帮助。您可以使用自己的服务器时间而不是客户端系统时间您可以使用自己的服务器时间而不是客户端系统时间如果用户能够更改系统时间,他们将能够绕过您的计时器。要绕过系统关闭,只需使用system.currentTimeMillis将开始时间存储在一个文件中,该文件为您提供自历元以来的时间,并从当前时间中减去该值。如果用户能够更改系统时间,他们将能够绕过

我想做一个10分钟的计时器。但问题是,我不希望用户能够处理系统时间或关闭设备进行欺骗。 即使用户更改设备时间或关闭设备,是否有办法使用此计时器?
感谢您的帮助。

您可以使用自己的服务器时间而不是客户端系统时间

您可以使用自己的服务器时间而不是客户端系统时间

如果用户能够更改系统时间,他们将能够绕过您的计时器。要绕过系统关闭,只需使用system.currentTimeMillis将开始时间存储在一个文件中,该文件为您提供自历元以来的时间,并从当前时间中减去该值。

如果用户能够更改系统时间,他们将能够绕过您的计时器。要避免系统关闭,只需使用system.currentTimeMillis将开始时间存储在一个文件中,该文件提供自历元以来的时间,并从当前时间中减去该值。

使用广播,您可以检测设备时间何时更改

您需要将广播意图添加到清单中,以便在检测到此类意图时触发接收器

<receiver android:name=".TimeChangedReceiver">
  <intent-filter>
    <action android:name="android.intent.action.TIME_SET" />
  </intent-filter>
</receiver>
手机会定期调整时间,因为内部时间不准确,但您可以指望每小时调整的时间不会超过几秒钟。这通常发生在它重新连接到网络并发出NTP呼叫时(这就是is在飞行后为ex更改时区时的检测方式)

您的广播接收器也会检测到这种变化,但由于闰秒的添加频率很低,而且很明显是一个小数量,因此您可以使用逻辑从用户所做的更改中筛选出这种变化。

使用广播,您可以检测设备时间何时发生变化

您需要将广播意图添加到清单中,以便在检测到此类意图时触发接收器

<receiver android:name=".TimeChangedReceiver">
  <intent-filter>
    <action android:name="android.intent.action.TIME_SET" />
  </intent-filter>
</receiver>
手机会定期调整时间,因为内部时间不准确,但您可以指望每小时调整的时间不会超过几秒钟。这通常发生在它重新连接到网络并发出NTP呼叫时(这就是is在飞行后为ex更改时区时的检测方式)


您的广播接收器也会检测到这种变化,但由于闰秒的添加频率很低,而且数量很小,因此您可以从用户所做的更改中筛选出这种变化。

您的意思是在设备关闭时跟踪倒计时?我认为这是不可能的,但你可以在关机时存储时间,然后在通电时恢复到关机的位置。你是说在设备关机时跟踪倒计时?我认为这是不可能的,但你可以在关机时存储时间,然后在通电时恢复到关机的位置。