确实,静态变量会导致内存泄漏和NullPointerExceptions。
您可以将字符串和字符串数组保存到SharedPreferences,所以这里有一个适合您的解决方案(永远记得对您想要从 SharedPreferences 获取的数据进行空检查):
用于设置和获取对象的 SharedPreferences 类:
public class SharedPrefManager {
public static boolean saveArray(String[] array, String arrayName, Context mContext) {
SharedPreferences prefs = mContext.getSharedPreferences("preferencename", 0);
SharedPreferences.Editor editor = prefs.edit();
editor.putInt(arrayName +"_size", array.length);
for(int i=0;i<array.length;i++)
editor.putString(arrayName + "_" + i, array[i]);
return editor.commit();
}
public static String[] loadArray(String arrayName, Context mContext) {
SharedPreferences prefs = mContext.getSharedPreferences("preferencename", 0);
int size = prefs.getInt(arrayName + "_size", 0);
String array[] = new String[size];
for(int i=0;i<size;i++)
array[i] = prefs.getString(arrayName + "_" + i, null);
return array;
}
public static void setDefaults(String key, String value, Context context) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
SharedPreferences.Editor editor = prefs.edit();
editor.putString(key, value);
editor.commit();
}
public static String getDefaults(String key, Context context) {
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
return preferences.getString(key, null);
}
}
将数组设置为 SharedPreferences:
清除并将您的数组更新为 sharedpreferences。
//save array to shared pref
SharedPrefManager.saveArray(array, "array_tag", getApplicationContext());
从 SharedPreferences 获取数组:
String [] a = SharedPrefManager.loadArray("array_tag", getApplicationContext());
将字符串保存到 SharedPreferences
SharedPrefManager.setDefaults("your_tag", "string_value", context);
从 SharedPreferences 中获取字符串
SharedPrefManager.getDefaults("your_tag", getApplicationContext())