2 回答

TA貢獻1796條經(jīng)驗 獲得超10個贊
只需重寫方法Activity.onPause()
并Activity.onResume()
保存時間戳,然后再執(zhí)行計算。首選項名稱中的一個空格Zeit save
可能會導致它始終返回默認值0
;最好用_
下劃線替換它,例如。timestamp_paused
。

TA貢獻1777條經(jīng)驗 獲得超10個贊
博士
我無法幫助將值保存到存儲中,因為我不使用 Android。但我可以展示如何記錄當前時刻并稍后計算經(jīng)過的時間。
記錄當前時刻。
Instant.now().toString()
"2019-09-24T20:50:52.827365Z"
解析該字符串并捕獲經(jīng)過的時間:
Duration? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? // Represent a span-of-time not attached to the timeline.
.between(? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?// Calculate time elapsed between a pair of moments.
? ? Instant.parse( "2019-09-24T20:50:52.827365Z" ) ,? // Parse string in standard ISO 8601 format. The `Z` on the end means UTC, pronounced “Zulu”.?
? ? Instant.now()? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?// Capture the current moment in UTC.
)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?// Returns a `Duration` object.?
.toMillis()? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?// Interrogates the `Duration` object for its total elapsed time in milliseconds, effectively truncating any microseconds/nanoseconds.
java.time
跟蹤時間的現(xiàn)代方法使用java.time類,具體來說:
Instant
代表 UTC 中的某個時刻Duration
表示與時間線無關(guān)的時間跨度,基本上是納秒的計數(shù)。
捕獲 UTC 中的當前時刻。
Instant?instant?=?Instant.now()?;
使用標準ISO 8601格式保留該值的文本表示形式。
String?output?=?instant.toString()?;
讀取存儲的字符串,并將其解析為Instant
.
String?input?=?"2019-09-24T20:50:52.827365Z"?; Instant?then?=?Instant.parse(?input?)?;
捕獲當前時刻,并將經(jīng)過的時間計算為“持續(xù)時間”。
Instant?now?=?Instant.now()?; Duration?d?=?Duration.of(?then?,?now?)?;
如果您希望將經(jīng)過的時間作為總毫秒數(shù),請詢問該Duration
對象。
long?milliseconds?=?d.toMillis()?;??//?Total?elapsed?time?in?milliseconds,?truncating?any?microseconds/nanoseconds.
添加回答
舉報