Android アプリケーションを開発していますが、システムの初回起動時間を決定する際に問題が発生しました。つまり、デバイスの最初の起動からすでに経過した時間を測定する必要があります。
ACTION_BOOT_COMPLETED をリッスンし、SharedPreferences に何かを保存するソリューションについては知っていますが、別のソリューションが必要な場合があります。たぶん、システムプロパティはありますか?
ユースケース(議論からの抜粋)
- サーバーから受信した各ファイルのファイル名には、サーバーから取得したタイムスタンプが含まれています
System.currentMillis()
- これらのタイムスタンプを比較して、最新のファイルを特定します。
- 現在、ユーザーはシステム時刻を数か月先に変更しています。
- ユーザーがシステム時刻を変更した後にダウンロードされた最新のファイルを特定できます。
- ここで、ユーザーは時間を元の設定に戻します。
- タイムスタンプを比較すると、ステップ 4 でダウンロードしたファイルが常に優先されます。
この問題を解決する特効薬は、最初の起動 (出荷時設定へのリセット後) からの秒数をカウントするタイムスタンプです。と同じですSystemClock.elapsedRealtime()
が、各起動後のリセットはありません。残念ながら、これまでの回答から、この特効薬は存在しないことがわかります。
ただし、多くの回答は、その問題に取り組む方法の多種多様なオプションを示しています。OneWorld123 は、それぞれの回答について、それが彼のニーズにどのように合っているかについてコメントしました。