我可以使用 android.intent.action.TIME_SET
在应用程序在前台、后台或通过 最近使用的应用程序
来检测时钟时间的更改,参考这里。
然而,如果我在 设置-> 应用 中强制停止应用程序,则无法再收到此广播。
目前,我希望在 ForceStop 后检测用户更改时钟时间并回到我的应用程序,因此我执行以下操作:
long deltaTimeBeetweenCurrentTimeAndTimeSinceReboot = System.currentTimeMillis() - SystemClock.elapsedRealtime();
long oldDelta = mSharedPreference.getDeltaTimeBeetweenCurrentTimeAndTimeSinceReboot();
if(deltaTimeBeetweenCurrentTimeAndRebootTime - oldDelta > 5000){
// clock time change
}
我的想法是我保存了当前时间(System.currentTimeMillis()
)和自上次重启以来的时间差(SystemClock.elapsedRealtime()
)。每次打开应用程序时,我都会比较旧的时间差和新的时间差(除了第一次安装)。在以下情况下它运行良好: 用户强制停止
应用程序->更改时间->返回应用程序。
然而,仍然有一种情况: 用户强制停止
应用程序->更改时钟时间->重新启动设备->打开我的应用程序。这时我无法使用上述方法检查时钟时间是否已更改,因为在重新启动后SystemClock.elapsedRealtime()将重置。如何在这种情况下检测时钟时间是否已更改?
任何帮助或建议都将不胜感激。