我想记录完成游戏等级所需的最短时间。
我想将它存储在SharedPreferences中。现在,我能够存储和检索每个级别的时间并在ListView中设置它,但我将它以“00:00”之类的字符串格式存储。
我正在使用两个int(s)(Minutes,Seconds),当水平完成时,它每秒增加1,我将其存储为
String time = String.format("%02d", Minutes) + ":" + String.format("%02d", Seconds);
然后我将它存储在SharedPreferences中。但是我无法比较最近完成一个级别的时间是否比之前最短的时间短。
如果用户在特定级别上花费的时间比以前少,我只想更换时间。
答案 0 :(得分:1)
只需存储时间戳。您可以使用System.currentTimeMillis()
来获取级别启动时的时间,并在完成时再次调用它,获取差异并将其存储为long而不是字符串。然后,您可以使用
String.format("%02d %02d",
TimeUnit.MILLISECONDS.toMinutes(millis),
TimeUnit.MILLISECONDS.toSeconds(millis) -
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis))
);
像这样的东西
long startTime = System.currentTimeMillis();
try {
Thread.sleep(3000);
long endTime = System.currentTimeMillis();
long differenceTime = endTime - startTime;
Log.d("TEST", String.format("%02d %02d",
TimeUnit.MILLISECONDS.toMinutes(differenceTime),
TimeUnit.MILLISECONDS.toSeconds(differenceTime) -
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(differenceTime))
));
} catch (Exception e) {
}