在我在Android Studio中制作的游戏中,我希望有一个随着时间的推移而侵蚀的对象。一旦物体被完全侵蚀,玩家就可以将其破坏以获得积分。我希望此时间值基于现实世界时间,以便在应用关闭时项目继续侵蚀。
实现这一目标的最佳方法是什么?我应该使用Date变量,还是可以使用更简单的东西?
答案 0 :(得分:0)
您可以通过sharedprefrences
和service
使用非常简单的方法,当应用程序被杀死时保存时间日期变量,当用户回到您的应用程序时,您可以检查您的值保存的密钥,如果它不为空,则将其与当前时间进行比较,并获得两者之间的差异。这就是你如何做到的。
答案 1 :(得分:0)
当对象开始侵蚀时,请节省时间:
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.
}
}