Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java android离线模式下的时间欺骗防范_Java_Android_Timer - Fatal编程技术网

Java android离线模式下的时间欺骗防范

Java android离线模式下的时间欺骗防范,java,android,timer,Java,Android,Timer,我正在创建一个应用程序,可以监控特定任务所花费的时间。时间取自服务器,并且工作正常。但当我添加离线功能时,我从System.currentTimeMillis()中抽出时间。有一个问题,如果用户改变他们的电话时间,那么他们可以很容易地欺骗过去的时间。是否有其他方法可以获取特定任务间隔的持续时间。或者如何防止这种欺骗?我已经在堆栈溢出中搜索了一个好的答案。但是什么也找不到。请帮助根据我在研究中看到的情况,您必须将时间存储在服务器上,这样可以更好地防止用户通过访问应用程序的文件来更改时间 我相信这两

我正在创建一个应用程序,可以监控特定任务所花费的时间。时间取自服务器,并且工作正常。但当我添加离线功能时,我从
System.currentTimeMillis()中抽出时间。有一个问题,如果用户改变他们的电话时间,那么他们可以很容易地欺骗过去的时间。是否有其他方法可以获取特定任务间隔的持续时间。或者如何防止这种欺骗?我已经在堆栈溢出中搜索了一个好的答案。但是什么也找不到。请帮助

根据我在研究中看到的情况,您必须将时间存储在服务器上,这样可以更好地防止用户通过访问应用程序的文件来更改时间

我相信这两个链接可以给你一个想法的线索


.

您可以自己启动一个线程来计算运行时间。将计数器放置在服务内,以防止其与应用程序关闭。如果服务因设备重启或其他原因而关闭,则在继续之前需要再次联机确认时间


只要设备没有重新启动,或者系统由于资源不足而关闭了服务,用户就可以保持脱机状态。

当我使用服务器时,应用程序工作正常。但在脱机状态下,我存储的是开始时间。但当任务完成时,我使用系统时间计算结束时间。有人在更改设备时间。无法阻止用户更改系统日期。在脱机模式下,你唯一能做的就是存储日期和时间以及计算经过的时间,但你仍然有问题。如果应用程序关闭或手机关闭,这将无法工作。这是可能的解决方案,我正在工作。但问题是,当服务重新启动时,我无法联机。这意味着我必须获取System.currentTimeMillis()。这就是问题所在。使用SystemClock.elapsedRealtime()如何。它将返回启动后的毫秒数,包括睡眠时间。重新启动后仍需要联机