我应该如何计算玩家花费在应用程序之外的时间?
在Android Studio中制作的游戏中,我想要一个随着时间的推移而被侵蚀的对象。一旦物体完全被侵蚀,玩家就可以将它击退。我希望这个时间值基于真实的世界时间,以便在应用程序关闭时该项目继续受到侵蚀。我应该如何计算玩家花费在应用程序之外的时间?
完成此操作的最佳方法是什么?我应该使用日期变量,还是我可以逃避一些简单的事情?
有一个非常简单的方法,您可以通过sharedprefrences
和service
,当应用程序被杀害节省时间日期变量,当用户回到您的应用程序,你可以对你的保存密钥检查值,如果不使用null将它与当前时间进行比较,并获得两者之间的差异。这就是你如何得到这个。
好的和可行的解决方案。 –
当对象开始侵蚀,节省时间:long startTime = SystemClock.elapsedRealtime();
在你onPause()
,保存此时间:
public void onPause() {
SharedPreferences.Editor editor = getSharedPreferences("myPrefs", MODE_PRIVATE).edit();
editor.putLong("startTime", startTime);
editor.commit();
super.onPause();
}
在你onResume()
,得到保存的时间和当前时间比较:
public void onResume() {
SharedPreferences prefs = getSharedPreferences("myPrefs", MODE_PRIVATE);
long startTime = prefs.getLong("startTime", 0);
long elapsedTime = SystemClock.elapsedRealtime() - startTime;
if (elapsedTime > EROTION_TIME) {
// Voila !! The object has eroded.
}
}
我想这是一个真正的好选择,考虑到所提到的文档(https://developer.android.com/reference/android/os/SystemClock.html):SystemClock.elapsedRealtime()返回系统启动以来的时间[。 ..]这个时钟保证是单调的,因此是通用间隔时间的推荐基础。 –
它确实不是。当设备重新启动时钟重置。从时代开始,你应该使用“常规”毫米 –
使用**计时器k **带警报管理器如果需要 –