2010-09-25 42 views
1

你好 在我的Android应用程序中打开我想获得时间应用程序打开时至今。 最初我尝试的是从服务器加载应用程序的时间,然后从设备中获取与当前时间的差异。但通过这样做,如果用户更改时间,那么我将不会获得实际时间。 它不可能再次击中服务器的相同。时间采用的是Android

有什么办法可以在android中实现这个吗?

请分享您宝贵的建议。

感谢提前:)

回答

1

尝试 “SystemClock” 级, “uptimeMillis()” 方法。

。结果存储在应用程序启动时的变量。

+4

实际上你实际上需要SystemClock.elapsedRealtime()。对于大多数用途uptimeMillis()是正确的,但它实际上并不是真正的运行时间。 http://developer.android.com/reference/android/os/SystemClock.html – hackbod 2010-09-25 17:15:03

1

回应我对于其他问题所说的话,首先需要熟悉活动生命周期并理解常用词的新颖含义(几乎毫无意义),例如Android应用程序生命中的“开放”和“开始” 。

没有什么办法可以防止用户更改系统时间 - 你只是没有做到这一点对用户的权利。通常情况下,这应该是一件罕见的事情,除非你做了一些让他们想要的东西,比如在这么多分钟后将它们从应用程序的免费版本中锁定出来。 (但是,如果手机在移动网络上,大概移动网络偶尔会调整时间来纠正设备振荡器中的错误或管理时间变化)

您可以做的是检查每个入口点的系统时间到您的应用程序。如果它倒退了,那么......事情正在发生。如果时钟已经设置完毕,您可以假设在负时差之间没有时间,并从那里恢复您的时间表,至少保留您的记录中以前使用的所有时间。

这可能是因为有它,你可以查询和关联系统时间CPU周期计数器,但是这可能是特定的高度和设备实际上可以复位。如果CPU频率需求受到限制,它可能会变得很奇怪。

您可能能够设置一个倒数计时器为绑定的切入点在哪你可以计量的尽可能多的时间。我不知道这些系统时间变化是否可靠地工作 - 理想情况下他们会这样做。测试或阅读源将显示。

0

使用elapsedRealtimeonCreate()店呢。更可靠。