2017-03-02 47 views
0

我想保持一個記錄拍攝完成遊戲關卡時間最短。如何比較新的持續時間與存儲的持續時間,並用兩個較短的更換?

我想將它保存在SharedPreferences。現在,我能夠存儲和檢索的時間爲每個級別,並設置在ListView,但我將它存儲在像「00:00」的字符串格式。

我使用兩個int(S)(分,秒),其通過1最後增加每一第二級完成時予存儲它像

String time = String.format("%02d", Minutes) + ":" + String.format("%02d", Seconds); 

然後我將其存儲在SharedPreferences。但是我無法比較最近一次完成某個級別的時間是否比以前最短的時間短。

我只是想,如果用戶花費更少的時間比以前針對特定水平更換時間。

回答

1

改爲存儲時間戳。您可以使用System.currentTimeMillis()得到時的水平開始和調用再次當它完成,得到的差異,存儲,作爲一個長期而不是一個字符串。然後,您可以使用

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) { 

     } 
+0

一切都做,但是當我試圖轉換米利斯到幾分鐘返回24807913轉換那些毫秒到秒和分鐘,我試過TIMEUNIT。 MILLISECONDS.toMinutes(米利斯);它仍然返回Tme在這種方式下,我嘗試了int mins =(millis/1000)/ 60;它仍然返回相同的... –

+0

我已經編輯了我的答案與如何使用它的例子。 –