• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > Android SharedPreferences存储,sharedpreferences

Android SharedPreferences存储,sharedpreferences

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了sharedpreferences,getsharedpreferences,xsharedpreferences,sharedpreferences sp,android存储方式等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

Android SharedPreferences存储,sharedpreferences


一 概念

  SharedPreferences存储方式是Android中存储轻量级数据的一种方式。SharedPreferences存储主要用来存储一些简单的配置信息,内部以Map方式进行存储,因此需要使用键值对提交和保存数据,保存的数据以xml格式存放在本地的/data/data/<package name>/shares_prefs文件夹下。

 

二 特点

1,        使用简单,便于存储轻量级的数据;

2,        只支持Java基本数据类型,不支持自定义数据类型;

3,        SharedPreferences是单例对象,在整个应用内数据共享,无法在其他应用内共享数据;

 

三 注意事项

1,        SharedPreferences创建的时候使用的文件名不同,得到的对象不同,在存储位置会创建多个xml文件,不同文件名的SharedPreferences的数据不会共享;创建时采用相同的文件名,得到多个SharedPreferences引用,此时这多个引用共享同一个xml文件,它们操作的数据为相同的数据;

2,        针对数据的增删改查操作只有在提交后操作才能生效,此步骤最容易被忽略,当执行了对数据的操作后得不到需要的效果时,请查看是否没有提交操作。

3,        三种创建模式中最好采用MODE_PRIVATE,使用其他两种模式创建容易引起安全问题,就算采用MODE_PRIVATE,当别人活得root权限后也可能泄露用户的重要信息,因此建议使用SharedPreferences时,如果要存储用户名和密码时,不要明文存储,应该使用加密存储,防止重要隐私泄露,引起损失。

 

四 使用

1,        获得SharedPreferences对象

SharedPreferences对象必须使用上下文获得,使用时注意先要获得上下文。获得SharedPreferences对象方法为:

SharedPreferences sharedPreferences = getSharedPreferences(参数一, 参数二);

参数一为要保存的xml文件名,不同的文件名产生的对象不同,但同一文件名可以产生多个引用,从而可以保证数据共享。此处注意指定参数一时,不用加xml后缀,由系统自动添加。

参数二为创建模式,共有三个值:

MODE_PRIVATE

MODE_WORLD_READABLE

MODE_WORLD_WRITEABLE 

第一个值使得SharedPreferences存储的数据只能在本应用内获得,第二个和第三个值分别使得其他应用可以读和读写本应用SharedPreferences存储的数据。由此可能带来安全问题,请参考本文二(3)部分。

2,        获得editor对象

使用以上获得的SharedPreferences对象产生editor,方法为:

Editor editor = sharedPreferences.edit();

3,        对数据实现增删改查

添加数据使用以下方法:

editor.putString(key, value);

可以实现数据的更新只需添加同键的键值对,和操作Map集合一样。

删除数据:

editor.remove(key);

删除参数部分键的键值对。

查询数据:

String result = sharedPreferences.getString(key1, key2);

Key1是要查询的键,返回对应的值,当键不存在时,返回key2作为结果。

清空数据

editor.clear();

 

注意:无论是否同一个sharedPreferences对象,若是产生多个editor,不同的editor之间对数据的操作不会相互影响,此处容易犯错误,例如,以下的程序:

sharedPreferences.edit().putString(key1, value1);

sharedPreferences.edit().putString(key2, value2);

sharedPreferences.edit().putString(key3, value3);

sharedPreferences.edit().commit();

执行后这种方式无法存储,因为sp.edit()每次都会返回一个新的Editor对象,Editor的实现类EditorImpl里面会有一个缓存的Map,最后commit的时候先将缓存里面的Map写入内存中的Map,然后将内存中的Map写进XML文件中。使用上面的方式commit,由于sp.edit()又重新返回了一个新的Editor对象,缓存中的Map是空的,所以导致数据无法被存储。这里即需要注意,只有提交时,不同的editor无法完成既定的任务。而增加,删除,更新,查询,若是同一个sharedPreferences产生的editor,则对共享的数据有效,会按照既定的顺序工作。而不同sharedPreferences产生的editor则因为处理的xml文件不同而不能共享数据。

再次强调:所有使用editor操作的数据,必须经过同一个editor提交即commit后才能生效。

 

五 Android实例

以下使用Android实例完成以上内容的验证:

1,        Activity界面和功能

 

(以下描述控件的顺序是布局中的由上到下)

保存数据功能:在第一个EditText中写入要保存的键,在第二个EditText中写入要保存对应键的值,点击第一个按钮则保存数据;

查询数据功能:在第三个EditText中写入要查询的键,点击第二个按钮查询数据,查询出的值显示在第一个TextView中;

删除数据功能:在第四个EditText中写入要删除的键,点击第三个按钮则删除键和值;

清空数据功能:点击第四个按钮则清空与editor对应的xml文件中的所有数据,但不会影响其他xml文件。

 2,        主要代码

①MainActivity.java

package com.example.sharedpreferences;

import android.os.Bundle;
import android.app.Activity;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.text.Editable;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;

public 


 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • SharedPreferences详解,sharedpreferences
  • 跨进程SharedPreferences异常。,sharedpreferences
  • Android之SharedPreferences数据存储,sharedpreferences
  • Android SharedPreferences存储,sharedpreferences
  • Android软件开发之SharedPreferences,sharedpreferences
  • Android数据存储方式--SharedPreferences,sharedpreferences
  • Android入门(九)文件存储与SharedPreferences存储,
  • android开发之路11(用SharedPreferences存储数据),sharedpreferences

相关文章

  • 2017-07-22Android项目开发填坑记
  • 2017-07-22Android-SQLite和SQLiteOpenHelper
  • 2017-05-26android中生成excel
  • 2017-08-23Android实现支付宝支付
  • 2017-05-26Android开发学习之路--网络编程之xml、json
  • 2017-05-26Butter Knife使用详解,butterknife
  • 2017-05-26Android Log,androidlog
  • 2017-05-26Install Battery Historian,batteryhistorian
  • 2017-05-26Android通知栏沉浸式/透明化完整解决方案,root不完整解决方法
  • 2017-05-26Android中的 Multiple dex files define 编译错误引发的思考

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • RecyclerView的五大开源项目-解决办法
    • Android Butterknife 8.4.0 使用方法总结,butterknife8.4.0
    • 我的Android进阶之旅------Android 5.0中出现警告的解决方法: Service Intent must be explicit:
    • Atitit.android播放smb&#160;网络邻居视频文件解决方案,atitit.androidsmb
    • Android Studio添加Parcelable序列化小工具(快速提高开发效率)
    • 编译器开发系列--Ocelot语言6.静态类型检查,编译器--ocelot
    • android adb pull push,androidadb
    • 安卓第十二天笔记-广播,安卓第十二天广播
    • Android 手机卫士11--窗体弹出PopupWindow,11--popupwindow
    • android开发我的新浪微博客户端-载入页面UI篇(1.1),androidui

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有