Android SharedPreferences基本用法
2016-06-17 15:28
387 查看
使用SharedPreferences
SharedPreferences是Android平台上一个轻量级的存储类, 用来保存应用的一些常用配置.SharedPreferences与Editor简介
主要用于保存配置文件, 保存数据的形式是key-value对.SharedPreferences接口主要负责读取应用程序的Preferences数据,常用方法:
boolean contains(String key)是否包含特定key的数据.
abstract Map<String, ?> getAll()获取SharedPreferences数据里的全部的key-value对.
boolean getInt(String key, int defValue)获取指定key对应的value. 如果key不存在, 则返回默认值defValue. 其他int可以是boolean, float, long...
SharedPreferences接口没有写入数据的能力, 而是通过调用SharedPreferences的内部接口, SharedPreferences调用edit()方法获得对应的Editor对象. Editor接口提供如下方法.
Editor clear()清空SharedPreferences数据.
Editor putString(String key, @Nullale String value)向SharedPreferences存入指定key对应的数据. 其中putString可以是putInt, putFloat...
Editor remove(String key)删除指定key对应的数据项.
boolean commit()当Editor编辑完成后, 调用此方法提交.
返回值是Editor, return Returns a reference to the same Editor object, so you can chain put calls together.
获取SharedPref实例的方法有两种:
调用Context对象的
SharedPreferences getSharedPreferences(String name, int mode)
调用Activity对象的
SharedPreferences getPreferences(int mode)
name表示存储文件的名字, 第二种方法采用反射方式获取类名作为默认名.
mode参数表示操作模式:
Context.MODE_PRIVATE默认操作模式, 数据只能被本应用读写.
Context.MODE_WORLD_READABLE(不推荐)可以被其他应用读取.
Context.MODE_WORLD_WRITEABLE(不推荐)可以被其他应用写入.
SharedPreferences 的存储位置和格式
SharedPreferences数据总是保存在/data/data/<package name>/shared_pref/目录下, 总是以XML格式保存.
<?xml version='1.0' encoding='utf-8' standalone='yes' ?> <map> <int name="color" value="-1611696" /> </map>
示例代码
public class MainActivity extends AppCompatActivity { private static final int RED = 0xffff0000; private static final int BLUE = 0xff00fff0; SharedPreferences mPreferences; SharedPreferences.Editor mEditor; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final LinearLayout bg = (LinearLayout) findViewById(R.id.background); Button button = (Button) findViewById(R.id.red_button); Button blueButton = (Button) findViewById(R.id.blue_button); //获取只能被本程序读写的SharedPreferences对象 mPreferences = getSharedPreferences("test", Context.MODE_PRIVATE); mEditor = mPreferences.edit(); // 读取配置文件中'color'数据 int color = mPreferences.getInt("color", 0xffffffff); // 应用配置文件 bg.setBackgroundColor(color); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { mEditor.putInt("color", RED); mEditor.commit(); bg.setBackgroundColor(RED); } }); blueButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { mEditor.putInt("color", BLUE); mEditor.apply(); bg.setBackgroundColor(BLUE); } }); mEditor.putString("time", (new Date()).toString()); mEditor.commit(); } }
相关文章推荐
- 一次偶然机遇找到一个不错的关于Android实现加载gif动画的实例,写一下分享个大家。
- android开发(50) Android透明状态栏。适用于 4.4 以上及 5.0以上设备
- android studio中使用MPChart图表的准备
- Android 快速开发框架:推荐10个框架:afinal、ThinkAndroid、andBase、KJFrameForAndroid、SmartAndroid、dhroid..
- Android屏幕适配那些事儿
- android如何获取到启动类的包和类路径
- android studio中打包混淆
- android activity的四种启动模式
- 博客目录
- Android安全攻防战,反编译与混淆技术完全解析(上)
- android6.0源码分析之AMS服务源码分析
- Android安全攻防战,反编译与混淆技术完全解析(下)
- android 手指滑动顺时针逆时针判断
- [Android官方Demo系列] PageTransformer布局变更
- 关于android:configChanges的属性
- 烦人的ListView
- Android adb 命令查看当前打开的activity name
- Android中利用手机抓包的方法,经典篇
- android shardsdk 一键分享点击无界面问题
- 初见Android 6.0新特性