私は、アセット フォルダー内のアプリに同梱されている xml によって入力されるデータの SQLite に依存するアプリを持っています。
- 初めてアプリを実行すると、共有設定 config_run = false が設定されます。
- 次に、config_run = false かどうかを確認してから、xml を解析し、データを db にダンプします
- config_run = true に設定
Google Play で更新をプッシュし、XML にさらにコンテンツを追加する必要がある場合に気付きました。データベースのバージョンを 1 から 2 に変更しても、共有設定の config_run 値が true に設定されるため、インポート スクリプトは実行されません。
この状況を処理する方法についての指針はありますか?
シナリオ
- 最初のインストール - Ver = 1、DB V = 1 (データは解析され、データベースにダンプされます)
- バグは修正され、プッシュおよび更新されましたが、データは変更されていません - ver = 1.1、DB V = 1 (コードを置き換えるだけで、データベースをアップグレードまたは再作成する必要はありません)
- データをアップグレードし、新しいアップデートをプッシュ - ver 1.2、DB = 2 (新しいコードはありませんが、データを再作成する必要があります)
私のアプリの流れ
- アプリがスプラッシュ アクティビティを開始します。Shared Pref - config_run が false に等しい場合、進行状況ダイアログが開始され、データが解析されてデータベースにダンプされます。
- DB を解析して作成し、データをダンプすると、MainActivity に移動します。
2 番目のケース
- SplashActivity が実行され、config_run = true になるため、メイン アクティビティに直接移動します。
以下の少数の人々が示唆しているように、SQLiteHelper の onUpgrade でデータをデータベースにダンプしようとすると、SplashActivity で Db 接続を開かず、ダイアログの進行状況も表示されないため、MAinActivity でのみ発生します。