如果你有一个相对较小的k-v集合你想保存,您应该使用SharedPreferences.
SharedPreferences对象指向包含键值对的文件,并提供一些简单的方法来读取和写入。SharedPreferences文件可以私人或共享。
下面展示了如何使用SharedPrefernces来存储和检索简单值。要想使用SharedPreferences来保存数据,首先需要获得SharedPreferences的对象。
1、Context类中的 getPreferences()方法
此方法需要传入两个参数,第一个参数是sp文件的名称,第二个参数用于指定操作模式,主要有两种模式可以选择,MODE_PRIVATE和MODE_MULTI_PROCESS。MODE_PRIVATE是默认的操作模式,和直接传入0效果是一样的,表示只有当前的应用程序才可以对这个sp文件进行读写。MODE_MULTI_PROCESS则一般是用于会有多个进程中对同一个sp文件进行读写的情况。
获取sp对象:
SharedPreferences sp1 = this.getSharedPreferences("fileName",Context.MODE_PRIVATE);
如果,名为fileName的文件不存在则会创建一个。
2、Activity类中的getPreferences()方法
这个方法和Context 中的getSharedPreferences()方法很相似,不过它只接收一个操作模式参数,因为使用这个方法时会自动将当前活动的类名作为sp的文件名。
获取sp对象:
SharedPreferences sp = this.getPreferences(Context.MODE_PRIVATE);
3、 PreferenceManager 类中的getDefaultSharedPreferences()方法这是一个静态方法。它接收一个Context参数,并自动使用当前应用程序的包名作为前缀来命名sp文件。
获取sp对象:
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
存储数据
得到了SharedPreferences 对象之后,就可以开始向sp文件中存储数据了,
主要可以分为三步实现。
1、调用SharedPreferences 对象的edit()方法来获取一个SharedPreferences.Editor 对象;
2、向SharedPreferences.Editor对象中添加数据,比如添加一个字符串则使用putString()方法,添加整型则使用putInt()方法以此类推;
3、调用commit()方法将添加的数据提交,从而完成数据存储操作。
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putInt(getString(R.string.saved_high_score),newHighScore);
editor.commit();
从sp对象读取数据
从sp文件中检索值,调用方法如getInt()和getString(),提供你想要读取值得key,如果不存在的关键,选择返回默认值。
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
long highScore = sharedPref.getInt(getString(R.string.saved_high_score), defaultValue);