gpt4 book ai didi

java - 强制停止应用程序后检测用户更改时钟时间

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:56:43 24 4
gpt4 key购买 nike

当应用处于前台、后台或从Recent App 终止时,我可以通过使用 android.intent.action.TIME_SET 来检测更改时钟时间,请遵循 here .
但是,如果我在 Setting->AppsForce Stop 应用程序,我将无法再接收此广播。
目前,我想检测用户更改时钟时间在 ForceStop 之后返回到我的应用程序,所以我这样做了

long deltaTimeBeetweenCurrentTimeAndTimeSinceReboot = System.currentTimeMillis() - SystemClock.elapsedRealtime();
long oldDelta = mSharedPreference.getDeltaTimeBeetweenCurrentTimeAndTimeSinceReboot();
if(deltaTimeBeetweenCurrentTimeAndRebootTime - oldDelta > 5000){
// clock time change
}

我的想法是在当前时间 (System.currentTimeMillis()) 和重启后的时间 (SystemClock.elapsedRealtime()) 之间保存一个增量。每次我打开应用程序时,我都会比较 oldDelta 和 newDelta(第一次安装除外)。它适用于以下情况:用户 Fore Stop app->Change time->come back to app.

但是,仍然有 1 种情况是:用户 Fore Stop 应用程序 -> 更改时钟时间 -> 重启设备 -> 打开我的应用程序。此时我无法使用上述方法来检查时钟时间是否已更改,因为重新启动后 SystemClock.elapsedRealtime()将重置。在这种情况下,我如何检测时钟时间是否发生了变化?
任何帮助或建议将不胜感激。

最佳答案

几个月前我也遇到过同样的情况。我没有找到任何直接破案的答案,所以我不会帮助你。但我可以给你一些建议:
换个角度看。

我在我的案例中做了什么,我回答了自己的问题:

“我真的想知道用户已经更改了时间 - 因为我隐式地告知/向用户展示了这个事实吗?”

“我是否想知道用户更改了时间 - 因为我需要它在应用程序后台调用某些操作或计算?”

在我的例子中,我的答案是“否”或"is"。因此,对于有问题的 Force-Stop + reboot 情况,我假设时间可能已经更改,并且我像第一次启动应用程序一样重置了我的应用程序的时间配置。

如果对您有帮助,请告诉我。

关于java - 强制停止应用程序后检测用户更改时钟时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47151170/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com