商务网站建设学期总结,做网站后台都要自己写吗,最火的推广软件,做网站买那种服务器好SharedPreferences 是一种轻量级的数据持久化存储机制。以key/value键值对形式存储在xml文件#xff0c;用于保存一些应用程序数据。保存在 /data/data/PACKAGE_NAME/shared_prefs/xxx.Xml文件。
SharedPreferences 只能存储string#xff0c;int#xff0c;float#xff… SharedPreferences 是一种轻量级的数据持久化存储机制。以key/value键值对形式存储在xml文件用于保存一些应用程序数据。保存在 /data/data/PACKAGE_NAME/shared_prefs/xxx.Xml文件。
SharedPreferences 只能存储stringintfloatlong和boolean五个基本数据类型。如果需要存取比较复杂的数据类型则需要对这些数据进行序列化。这一点通过源码可以看到SharedPreferences是个接口它的内部接口是Editor里面定义了上面五个数据类型的put方法以及putString、remove、clear、commit、apply方法。 上面可以看出getxx方法不在Edit接口中他们是在SharedPreferences
父级接口定义的因此增加、删除、清空方法需要使用edit但get方法不用下面距离分别验证这些方法。另外下面还有个是检查当前键是否存在和可以返回所有可用的键值两个方法。 布局定义了一些按钮
定义getSharedPreferences工具类 private static SharedPreferences preferences;
public static final String SPNAME appSpName;public static void putString(String key,String value){getSP().edit().putString(key,value).apply();Log.e(TAG, putString: getString(key,你太着急了));
}
public static String getString(String key,String defaultValue){return getSP().getString(key, defaultValue);
}public static void putInt(String key,int value){getSP().edit().putInt(key,value).apply();
}
public static int getInt(String key,int defaultValue){return getSP().getInt(key, defaultValue);
}public static void putBoolean(String key,boolean value){getSP().edit().putBoolean(key,value).apply();
}
public static boolean getBoolean(String key,boolean defaultValue){return getSP().getBoolean(key, defaultValue);
}public static void putFloat(String key,float value){getSP().edit().putFloat(key,value).apply();
}
public static float getFloat(String key,float defaultValue){return getSP().getFloat(key, defaultValue);
}public static void putLong(String key,long value){getSP().edit().putLong(key,value).apply();
}
public static long getLong(String key,long defaultValue){return getSP().getLong(key, defaultValue);
}/*** 根据key值删除指定元素各类型通用因为大家的key都是String* param key*/
public static void deleteValue(String key){getSP().edit().remove(key).apply();
}/*** 清空了创建这个sharedpreference所有的*/
public static void clearAll(){getSP().edit().clear().apply();
}/*** 清空了创建这个sharedpreference所有的*/
public static boolean containsKey(String key){getSP().edit().clear().apply();//检查当前键是否存在boolean isContainsgetSP().contains(key);Log.e(TAG, containsKey: isContains isContains );//使用getAll可以返回所有可用的键值MapString,? keyMapgetSP().getAll();if (!keyMap.isEmpty()){SetString keySet keyMap.keySet();for (String myKey: keySet){Log.e(TAG, containsKey: myKey myKey );}}return isContains;
}public static SharedPreferences getSP(){if (preferences null){preferences BaseApplication.getContext().getSharedPreferences(SPNAME, Context.MODE_PRIVATE);}return preferences;
} 注意 2.1 BaseApplication.getContext().getSharedPreferences(SPNAME, Context.MODE_PRIVATE); getSharedPreferences方法传入的操作模式Context.MODE_PRIVATE为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容Context.MODE_APPEND模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件.特别注意还有两个MODE_WORLD_READABLE 和 MODE_WORLD_WRITEABLE我们不需要学习了他们 用来控制其他应用是否有权限读写该文件,在Android 4.2版本中已经被弃用 2.2 apply和commit前者是异步后者是同步方法。apply方法时在Android API level 9中引入的调用它会安全的异步写入SharedPreference Editor是当下首选方法。 定义按钮的点击事件并调用这个工具类 Override
public void onClick(View v) {int clickId v.getId();if (clickId R.id.asyncAct_putString){SpUtil.putString(name,张三);}else if (clickId R.id.asyncAct_getString){String name SpUtil.getString(name, 无名);String name1 SpUtil.getString(name1, 无名);Log.e(TAG, getString: name name name1 name1);}else if (clickId R.id.asyncAct_putBoolean){SpUtil.putBoolean(isBoy,true);}else if (clickId R.id.asyncAct_getBoolean){boolean isBoy SpUtil.getBoolean(isBoy, false);Log.e(TAG, getBoolean: isBoy isBoy);}else if (clickId R.id.asyncAct_putInt){SpUtil.putInt(age,18);}else if (clickId R.id.asyncAct_getInt){int age SpUtil.getInt(age, -1);Log.e(TAG, getInt: age age);}else if (clickId R.id.asyncAct_putFloat){SpUtil.putFloat(height,177.7F);}else if (clickId R.id.asyncAct_getFloat){float height SpUtil.getFloat(height, 0.00F);Log.e(TAG, getFloat: height height );}else if (clickId R.id.asyncAct_putLong){SpUtil.putLong(weight,70L);}else if (clickId R.id.asyncAct_getLong){long weight SpUtil.getLong(weight, 0L);Log.e(TAG, getLong: weight weight );}else if (clickId R.id.asyncAct_clearAll){SpUtil.clearAll();} else if (clickId R.id.asyncAct_containsKey){SpUtil.containsKey(weight);}
} 一些小提醒 应用程序一旦卸载或者通过手机设置页面清缓存SharedPreference也会被删除。在实际开发者很多会涉及敏感数据针对敏感数据我们呢需要对其加密后再进行存储取数据也是先解密再使用。