Android Developers:保存键-值对

来源:互联网 发布:如何做到知敬畏守规矩 编辑:程序博客网 时间:2024/05/21 20:59

如果你有一个相对小的键值对集合需要保存,你应该使用SharedPreferences APIs。一个SharedPreferences对象指向一个包含键值对的文件,并提供简单的方法来读和写它们。每个SharedPreferences文件通过框架被管理,并可以私有化或者被共享. 

 

这节课程向你展示了如何使用SharedPreferences API保存和获取简单的值. 

 

注意:SharedPreferences APIs仅仅用于读取和写入键-值对,并且你不应该把它和Preference API混淆,它帮助你为你的应用程序构建一个用户设置界面(尽管它们使用SharedPreferences实现应用程序设置的保存).更多关于使用Preference APIs的实现,请查阅Setting指南. 

 

获取一个SharedPreferences句柄 

————————————————————————————————————————————— 

通过调用下面两个方法之一,你能创建一个新的共享参数文件,或这访问一个已经存在的 

  • getSharedPreferences() - 如果你需要多个过名字标识的共享参数文件,使用这个方法,你使用第一个参数指定名字。你能在你应用中的任何Context调用它. 

  • getPreference() - 如果你仅仅需要这个Activity的一个共享参数文件,在这个Activity中使用这个方法。因为它返回一个默认的共享参数文件,它属于这个Activity,你不需要提供一个名字 
     

例如,下面的代码是在一个Fragment中被执行。它访问了通过字符串资源R.string.preference_file_key识别的共享参数文件,并且使用私有模式打开它,所以文件仅仅允许你的应用程序访问. 

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

当命名你的共享参数文件的时候,你应该使用一个在你的应用中唯一标识,如”com.example.myapp.PREFERENCE_FILE_KEY”. 
 

另外,如果你仅仅需要你的Activity的一个共享参数文件,你能使用getPreferences()方法: 

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE); 
写入Shared Preferences 

—————————————————————————————————————————————— 

为了写一个共享参数文件,通过调用一个SharedPreferences的edit()创建一个SharedPreferences.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(); 
读取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); 


原创粉丝点击