[安卓教程翻译]6.1 Saving Key-Value Sets

如果你要保存的是相对少量的键值对,那么你应该使用SharePreferences APIs。一个SharePreferences对象指向一个包含键值对的文件,并且提供了简单的方法来读写这些键值对。每个SharePreferences文件都由框架层来管理,可以私有也可以共享。

 

本节课程将告诉你如何使用SharePreferences APIs 来存取简单的值。

 

注意:SharePreferences APIs只是用来读写键值对的,不要和Preferences APIs混淆,Preferences APIs是为应用程序设置建立用户界面的(尽管它们使用SharePreferences APIs实现设置的保存)。

 

Get a Handle to a SharedPreferences


创建新的或者访问已存在的SharePreferences文件,可以使用以下两个方法:

  getSharePreferences() - 如果你想通过文件名访问某个SharePreferences文件,调用该方法,第一个参数就是文件名。该方法可以在app的任何Context中被调用。

  getPreferences() - 当你仅希望为activity使用一个SharePreferences文件时使用该方法。因为该方法会找到属于当前activity的默认的SharePreferences文件,不需要提供文件名。

 

例如,下列代码位于Fragment中。它访问SharePreferences文件由字符串资源R.string.preference_file_key确定,并使用私有模式打开,这样该文件只能被你自己的app访问。

Context context = getActivity();
SharedPreferences sharedPref = context.getSharedPreferences(
        getString(R.string.preference_file_key), Context.MODE_PRIVATE);

命名SharePreferences文件时,应该确保改名字在当前app中独一无二,例如"com.example.myapp.PREFERENCE_FILE_KEY"

 

或者,如果仅仅需要当前activity的SharePreferences文件,可以使用getPreferences()方法:

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);

注意:如果你在创建SharePreferences文件时使用了MODE_WORLD_READABLE或者MODE_WORLD_WRITEABLE,只要知道文件标识符,任何其他app都可以访问你的数据。

 

Write to Shared Preferences

 

要向shared preferences文件写入数据,调用SharePreferences的edit()方法来创建SharePreferences.Editor对象。

 

通过putInt()和putString()等方法传入键值对,然后调用commit()来保存修改。例如:

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putInt(getString(R.string.saved_high_score), newHighScore);
editor.commit();

 

Read from Shared Preferences

要取出shared preferences文件的数据,调用例如getInt()和getString()之类的方法,第一个参数是你想要的“值”所对应的“键”,第二个参数是可选的,表示如果文件没有找到“键”时返回的默认值。例如:

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
int defaultValue = getResources().getInteger(R.string.saved_high_score_default);
long highScore = sharedPref.getInt(getString(R.string.saved_high_score), defaultValue);

 

posted @ 2014-03-07 13:55  沙发土豆  阅读(147)  评论(0)    收藏  举报