Android SharedPreferencesデータアップグレード

2030 ワード

アプリケーション開発では、元の設計のSharedPreferencesの値を変更する必要がある場合、必要に応じて変更する必要があります.この場合、どうすればいいですか?
次の例を見てみましょう.これは私たちの第1版で開発されたものです.
package com.laomou.demo;

import android.content.SharedPreferences;

public class PreferencesUpgrade {
	public static final String KEY_LOCAL_VERSION = "pref_local_version_key";
	public static final int CURRENT_LOCAL_VERSION = 0;

	public static void upgradeLocalPreferences(SharedPreferences pref) {
		int version;
		try {
			version = pref.getInt(KEY_LOCAL_VERSION, 0);
		} catch (Exception ex) {
			version = 0;
		}
		if (version == CURRENT_LOCAL_VERSION)
			return;

		SharedPreferences.Editor editor = pref.edit();
		if (version == 0) {
			// TODO
			version = 1;
		}
		editor.putInt(KEY_LOCAL_VERSION, CURRENT_LOCAL_VERSION);
		editor.apply();
	}
}

需要またはその他の要因により、元の設計のSharedPreferencesの値を変更する必要があります.
例えばKEY_PICTURE_SIZEは1920 x 1152に変更する必要があります
これは私たちの第2版のコードです.
public class PreferencesUpgrade {
	public static final String KEY_LOCAL_VERSION = "pref_local_version_key";
	public static final int CURRENT_LOCAL_VERSION = 1;

	public static void upgradeLocalPreferences(SharedPreferences pref) {
		int version;
		try {
			version = pref.getInt(KEY_LOCAL_VERSION, 0);
		} catch (Exception ex) {
			version = 0;
		}
		if (version == CURRENT_LOCAL_VERSION)
			return;

		SharedPreferences.Editor editor = pref.edit();
		if (version == 0) {
			editor.putString(KEY_PICTURE_SIZE, "1920x1152");
			editor.apply();
			version = 1;
		}
		editor.putInt(KEY_LOCAL_VERSION, CURRENT_LOCAL_VERSION);
		editor.apply();
	}
}

SharedPreferencesの値を変更する方法を見てみましょう
バージョン番号の更新
public static final int CURRENT_LOCAL_VERSION = 1;

現在のバージョンが0の場合は、更新が必要です.
if (version == 0) {
	editor.putString(KEY_PICTURE_SIZE, "1920x1152");
	editor.apply();
	version = 1;
}

現在のバージョン番号の更新
editor.putInt(KEY_LOCAL_VERSION, CURRENT_LOCAL_VERSION);
editor.apply();