【Android Developers Training】 24. 保存键值

系统 2581 0

注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好。

原文链接: http://developer.android.com/training/basics/data-storage/shared-preferences.html


如果你有一些希望存储的相对较小的键值对数据集,你应该使用 SharedPreferences 的APIs。一个 SharedPreferences 对象指向一个包含键值对的文件,同时它还提供了一些简便的方法来支持写和读。每个 SharedPreferences 文件由框架管理并且可以规定是私有的还是共享的。

这节课将会介绍如何使用 SharedPreferences APIs来存储和恢复简单的数据。

Note:

SharedPreferences 的API只能用来读写键值对,不要将它与 Preference 的APIs搞混了,后者被用来根据你的应用设置帮助你构建一个UI(虽然他们使用 SharedPreferences 作为它们的实现来保存应用的配置)更多关于使用 Preference 的信息,阅读: Settings

 

一). 获取一个SharedPreferences句柄

你可以通过下面方法的任意一个来创建一个新的shared preferences文件或者获得一个已经存在的文件:

  • getSharedPreferences() :使用该方法如果你需要多个以名字作为标识的 shared preferences文件,名字是方法的第一个参数。你可以在你应用中的任何 Context 下调用这个方法。
  • getPreferences() :在一个 Activity 使用该方法如果你在这个activity中仅需要一个 shared preferences文件。因为这将获得一个属于该activity的默认 shared preferences文件,所以你不需要提供一个名称。

例如,下面的代码在一个fragment中执行。它获得一个 shared preferences文件,该文件的名字由资源字符串“ R.string.preference_file_key ”所指定,并且使用私有模式打开,这样这个文件就只会被你的应用所访问:

      Context context =
      
         getActivity();

SharedPreferences sharedPref 
      
      =
      
         context.getSharedPreferences(

        getString(R.string.preference_file_key), Context.MODE_PRIVATE);
      
    

当为 shared preferences文件起名时,你应该使用一个独有的可以识别出你的应用的名字,比如:“ com.example.myapp.PREFERENCE_FILE_KEY ”。

当然,如果你只想要在activity中使用一个 shared preferences文件,你可以使用 getPreferences() 方法:

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

Caution:

如果你通过 MODE_WORLD_READABLE 或者 MODE_WORLD_WRITEABLE 创建了一个 shared preferences文件,那么任何知道这个文件名的其他应用都可以获取你的数据。

 

二). 写入SharedPreferences

为了写入一个 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();
      
    

 

三). 读取SharedPreferences

为了从 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);
    

【Android Developers Training】 24. 保存键值对


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论