Android应用开发Android SharedPreference存储技术
白羽 2019-01-14 来源 :网络 阅读 546 评论 0

摘要:本文将带你了解Android应用开发Android SharedPreference存储技术,希望本文对大家学Android有所帮助。

    本文将带你了解Android应用开发Android SharedPreference存储技术,希望本文对大家学Android有所帮助。


"
   一、SharedReferences简介
   >>>SharesPreferences是用键值对的方式来存储数据的,同样,读取的时候也是通过键值对的方式进行读取,即提供一个键,就可以读出这个键所对应的值。SharesPreferences还支持不同数据类型的存储,并且存进去的数据和之后读取出来的数据类型不会发生变化。
   
   二、使用SharedPreferences进行数据存储
   首先需要获取到一个SharedPreferences对象,Android提供了3种方法:
   
   1、Context类中的SharedPreferences方法:
      此方法接受两个参数:第一个参数用于指定SharedPreferences文件的名称,如果该文件名不存在则会创建一个,否则不予创建,默认将数据继续存储进该已存在的文件目录当中。SharedPreferences文件目录都是存放在/data/data//shared_prefs目录下的。第二个参数是用于指定操作模式,操作模式共有四种:(等于号后是该参数可用数字代替的值)
   Context.MODE_PRIVATE = 0
   Context.MODE_APPEND = 32768
   Context.MODE_WORLD_READABLE = 1
   Context.MODE_WORLD_WRITEABLE = 2
   
   Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容,如果想把新写入的内容追加到原文件中。可以使用Context.MODE_APPEND
   Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件。
   Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用来控制其他应用是否有权限读写该文件。
   MODE_WORLD_READABLE:表示当前文件可以被其他应用读取;MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入。
   
   2、Activity类中的getPreferences()方法:
     只接收一个参数用于指定操作模式, 该方法默认将当前包名作为SharedPreferences文件名。
   
   3、PreferenceManager类中的getDefaultSharedPreferences()方法:
     这是一个静态方法,只接收一个Context参数,并自动使用当前应用程序的包名作为前缀来命名SharedPreferences文件名。
   
   已经通过上述方法获得了SharedPreferences对象,现在就可以进行存储操作了。存储操作主要分三步实现:
   (1)调用SharedPreferences对象的edit()方法获得一个SharedPreferences.Editor对象。
   (2)向SharedPreferences.Editor对象中添加数据,根据不同的数据类型调用不同的方法,如putString()、  putChar()等方法
   (3)调用apply()/commit()方法提交添加的数据。这两种方法有什么异同呢?
   
   这两个方法的区别在于:
   1. apply没有返回值而commit返回boolean表明修改是否提交成功
   2. apply是将修改数据原子提交到内存, 而后异步真正提交到硬件磁盘,  而commit是同步的提交到硬件磁盘,因此,在多个并发的提交commit的时候,他们会等待正在处理的commit保存到磁盘后在操作,从而降低了效率。而apply只是原子的提交到内存,后面有调用apply的函数的将会直接覆盖前面的内存数据,这样从一定程度上提高了很多效率。
   3. apply方法不会提示任何失败的提示。
   由于在一个进程中,sharedPreference是单实例,一般不会出现并发冲突,如果对提交的结果不关心的话,建议使用apply,当然需要确保提交成功且有后续操作的话,还是需要用commit的。
   
   示例代码如下:
   
   ?
   1
   2
   3
   4
   5
   6
   7
   <code>SharedPreferences  preferences=getSharedPreferences(""user"",Context.MODE_PRIVATE);
   Editor editor=preferences.edit();
   String name=""xixi"";
   String age=""22"";
   editor.putString(""name"", name);
   editor.putString(""age"", age);
   editor.commit();</code>
   三、从SharedPreferences读取数据:
     从SharedPreferences读取数据更加简单,SharedPreferences对象提供了一系列的get方法与SharedPreferences.Editor对象的put方法相对应,比如读取一个String类型的数据就使用getString();,这些get方法都接收两个参数,第一个参数用于指定键,第二个参数用于指定当传入键找不到对应值时返回的默认值。
   示例代码如下:
   
   ?
   1
   2
   3
   <code>SharedPreferences  preferences=getSharedPreferences(""user"",  Context.MODE_PRIVATE);
   String name=preferences.getString(""name"",  ""defaultname"");
   String age=preferences.getString(""age"",  ""0"");</code>
   "    

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之Android频道!

本文由 @白羽 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程