我想制作一款空闲游戏,为此我需要获取应用程序关闭的时间,以便我可以计算该离线时间内的收入。
我的第一个想法是获取 currentTimeMillis 并通过sharedPreferences保存它们,当再次打开应用程序时,我计算当前时间和保存时间之间的差异。我的问题是sharedPreferences变量似乎一直是0。
我的代码:
Zeit = System.currentTimeMillis() / 1000L;
Zeit_Differenz = Zeit - Zeit_SAVE;
Log.i("e","aktuelle Zeit: " + Zeit);
Log.i("e", "gespeicherte Zeit: " + Zeit_SAVE);
Log.i("e", "errechnete differenz: " + Zeit_Differenz);
SharedPreferences sharedPreferences = getSharedPreferences(SHARED_PREFS, MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putLong("Zeit save", Zeit);
editor.apply();
SharedPreferences sharedPreferences = getSharedPreferences(SHARED_PREFS, MODE_PRIVATE);
Zeit_SAVE = sharedPreferences.getLong("Zeit save", 0);
日志猫:
aktuelle Zeit: 1569344292 (time right now)
gespeicherte Zeit: 0 (saved time)
errechnete differenz: 1569344292 (calculated difference)
这些 fragment 之间还有其他代码。我刚刚为您复制了最重要的代码。
我希望你能帮助我,这确实是我实现这一目标的唯一想法。
最佳答案
只需重写方法 Activity.onPause()
和 Activity.onResume()
即可保存时间戳,然后再执行计算。首选项名称 Zeit save
中的一个空格可能会导致它始终返回默认值 0
;最好用 _
下划线替换它,例如。 timestamp_paused
。
关于java - 获取应用程序关闭的时间。如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58085235/