3

私は Android で長寿命のアプリを維持しています。その背後にあるデータ モデルを変更して、いくつかの SQLite データベースを 1 つの新しいデータベースにマージすることにしました。

問題は、新しい DB を作成して古い DB の使用を停止しただけでは、すべてのアプリ ユーザーがローカル ストレージに古い SQLite ファイルを保持したままになることです。

アプリの新しいバージョンで「データをクリア」する方法はありますか? (私はそれを行うための「正しい」方法を探しています。新しいDBが存在するかどうかを確認してそれに応じて行動できることは知っていますが、もっと良い方法があると思います)

ありがとう

4

2 に答える 2

1

BroadcastReceiverはい、MY_PACKAGE_REPLACEDアクションに を定義できます。このレシーバーのonReceiveメソッドでは、データベースを削除できます。(API12+)

<receiver
    android:name=".OnUpgradeReceiver"
    android:enabled="true" >
    <intent-filter>
        <action android:name="android.intent.action.MY_PACKAGE_REPLACED" />
    </intent-filter>
</receiver>

そしてBroadcastReceiver

public class OnUpgradeReceiver extends BroadcastReceiver {
    public OnUpgradeReceiver() {
    }

    @Override
    public void onReceive(Context context, Intent intent) {
        context.deleteDatabase("YOUR_DATABASE_NAME");
    }
}

これは更新の場合にのみトリガーされることに注意してください(Gradleファイルのバージョンコードを増やします)

于 2016-12-05T09:49:13.793 に答える