0

Android アプリを開発していますが、ユーザーが市場を更新するときにデータを保存する必要があります。実はアップデート開始前。onDestroy() を使用してみましたが、アプリの更新時に呼び出されません。あなたはなにか考えはありますか?

問題は、アプリが定期的にデータを保存していることです。また、更新を選択すると、同時にファイルに保存しようとしてデータが破損することがあります...そのため、更新イベントを検出しようとしています。

ファイルは、スケジュールされたスレッドを使用して一定の間隔 (たとえば 60 秒) で保存されます。また、ファイルには、従来の writeObject() を使用してシリアル化されたオブジェクトを保存します。これは、60 秒の固定レートでのみ発生し、アクティビティの onPause またはサービスの onDestroy() でも発生します。

ただし、固定レートの保存が更新時に正確に発生した場合 (これによりアプリが破棄されます)、保存が不完全になり、オブジェクトが破損して、次回アプリが起動されたときに保存ファイルから無効なオブジェクトが取得されます。

4

2 に答える 2

3

Android でデータを保存する一般的な方法 (Android 開発者のドキュメントから) は、次のいずれかを使用することです。

  • 共有設定のキーと値のペア
  • ファイルにデータを保存する
  • またはSQLiteデータベースを使用

通常のアクティビティのライフサイクル中でもそれらを使用する必要があります。更新間の永続化のニーズも解決しない理由がわかりません。

破損を避けるために、SQL を使用している場合は SQLite トランザクションを使用し、ファイルを処理する際の破損防止戦略についてはこの質問を確認してください。

于 2013-01-31T09:42:52.200 に答える
1

AFAIKは、アプリがいつ更新されるかを知る方法がありません(更新中にアプリがインストールされなくなったため、パッケージ関連のインテントを受け取りません)。いつものように停止し、すべての放送受信機が登録解除され、更新されます。

ただし、できることは、アプリにチェックを追加して、アプリが起動したときに更新されたかどうかをチェックし、更新された場合は何でも実行できるようにすることです。これは非常に簡単です。たとえば、アプリの現在のバージョン(を介して取得できますPackageManager)を共有設定に保存し、アプリが起動するたびに保存されているバージョンを現在のバージョンと照合します。

于 2013-01-31T09:43:47.917 に答える