5

Android で長い経過時間を測定する必要があり、その間にデバイスの再起動が発生する可能性があります。

私が理解していることからSystem.nanoTime()、デバイスが再起動するたびにリセットされ、System.currentTimeMillis()ユーザーが変更できるため信頼できません。

私が思いついた唯一の解決策は、とを聞いてACTION_SHUTDOWN、経過時間を計算BOOT_COMPLETEDするために使用System.currentTimeMillisec()することです(デバイスがオフになっている間、ユーザーはクロック時間を変更できません、うまくいけば:))、System.nanoTime()シャットダウンする前に持っていた最後の時間に追加します。

正直なところ、このソリューションは非常に高価で (2 つのブロードキャスト イベントをリッスンする必要があります)、不正確であるため、好きではありませんが、これを行う他の方法を見つけることができませんでした。

何か案は?また、ネイティブソリューションは私にとって良いでしょう。

4

1 に答える 1

1

インターネット タイム サーバーを使用してチェックする時刻を取得することで、ユーザーの変更時刻を回避できます。これを行うにはいくつかの方法があります。

この値を単純に保持する場合、ユーザーは計算を台無しにすることはできません。

于 2013-12-10T20:19:45.970 に答える