Android で長い経過時間を測定する必要があり、その間にデバイスの再起動が発生する可能性があります。
私が理解していることからSystem.nanoTime()
、デバイスが再起動するたびにリセットされ、System.currentTimeMillis()
ユーザーが変更できるため信頼できません。
私が思いついた唯一の解決策は、とを聞いてACTION_SHUTDOWN
、経過時間を計算BOOT_COMPLETED
するために使用System.currentTimeMillisec()
することです(デバイスがオフになっている間、ユーザーはクロック時間を変更できません、うまくいけば:))、System.nanoTime()
シャットダウンする前に持っていた最後の時間に追加します。
正直なところ、このソリューションは非常に高価で (2 つのブロードキャスト イベントをリッスンする必要があります)、不正確であるため、好きではありませんが、これを行う他の方法を見つけることができませんでした。
何か案は?また、ネイティブソリューションは私にとって良いでしょう。