• 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保存数据介绍

  如果有想要保存的相对较小键值集合,应使用SharedPreferences API。SharedPreferences对象指向包含键值对的文件并提供读写这些文件的简单方法。每个SharedPreferences文件由框架进行管理并且可以专用或共享。

  SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置比如窗口状态,一般在Activity中重载窗口状态onSaveInstancesState保存一般使用SharedPreferences完成,它提供了Android平台常规的Long长整形、Int整形、String字符串型的保存。

  处理方式:SharedPreferences类似过去的Windows系统上的ini配置文件,但它分为多种权限,可以全局共享访问 ,Android提示最终是以xml方式来保存,整体效率来看不是特别高,对于常规的轻量级而言要比SQLite要好不少如果真的存储量不大可以考虑自己定义文件格式。Xml处理时Dalvik会通过自带底层的本地XML Parser解析,比如XML pull方式,这样对于内存资源占用比较好。它的本质是基于xml文件存储key-value键值对数据,通过用来存储一些简单的配置信息。其存储位置在/data/data/<包名>/shared_prefs目录下。SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改通过Editor对象实现。

  SharedPreferences对象与SQLite数据库相比,免去了创建数据库、创建表、写SQL语句等诸多操作,相对而言更加方便、简洁。但是SharedPreferences也有其自身缺陷,比如其职能存储boolean、int、float、long和string五种简单的数据类型,比如其无法进行条件查询等。所依不论SharedPreferences的数据存储操作是如何简单,它也只能是存储方式的一种补充,而无法完全替代如SQLite数据库这样的数据存储方式。

  SharedPreferences API仅用于读写键值对,不得将其与Preferences API混淆,后者帮助为应用设置构建用户界面。

二、使用方法

1.根据Context获取SharedPreferences对象

private Context mContext;
private SharedPreferences mSharedPreferences;
...
mSharedPreferences =mContext.getSharedPreferences
                (PREFRENCE_FILE_KEY, Context.MODE_PRIVATE);

第一个参数是文件名;第二个参数是文件的操作权限。

操作权限有:

Context.MODE_PRIVATE :为默人操作模式,代表改文件时私有数据,只能被应用本身访问,在改模式下,写入的内容会覆盖原文件的内容,如果想把新写入的内容追加到原文件中,可以使用Context.MODE_APPEND。 Context.MODE_APPEND :模式会检查文件是否存在,存在就往文件追加,否则就创建新文件。 Context.MODE_WORLD_READABLE与Context.MODE_WORLD_WRITEABLE用来控制其他应用是否有权限读写文件。 Context.MODE_WORLD_READABLE :表示当前文件可以被其他应用读取。 Context.MODE_WORLD_WRITEABLE :表示当前文件可以被其他应用写入。  

获取SharedPreferences对象有两种方式:

(1)调用Context对象的getSharedPreferences()方法;

(2)调用Activity对象的getPreferences()对象。

两种方式的区别:调用Context对象的getSharedPreferences()方法获得的SharedPreferences对象可以被同一应用程序下的其他组件共享。调用Activity对象的getPrefrences()方法获得的SharedPreferences对象只能在该Activity中使用。

2.利用edit()方法获取Editor对象

SharedPreferences.Editor editor = mSharedPreferences.edit();

3.通过Editor对象存储key-value键值对数据

editor.putInt("id",person._id);
editor.putString("name",person.name);

4.通过commit()方法提交数据

editor.commit();

5.通过SharedPreferences对象读取数据

 int id = mSharedPreferences.getInt("id",0);
String name = mSharedPreferences.getString("name", "defaultname");

第二个参数是数值的默认值。

三、小案例

1.添加strings.xml文件

<string name="write_data">写入数据</string>
<string name="read_data">读取数据</string>
<string name="preference_file_key">com.zhangmiao.datastoragedemo.PREFRENCE_FILE_KEY</string>

2.修改activity_main.xml文件

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_marginTop="@dimen/fab_margin"
        android:layout_marginBottom="@dimen/fab_margin"
        >

        <Button
            android:id="@+id/shared_write"
            android:layout_height="wrap_content"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:text="@string/write_data" />

        <Button
            android:id="@+id/shared_read"
            android:layout_height="wrap_content"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:text="@string/read_data" />

</LinearLayout>

<TextView
      android:id="@+id/table_info"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:text="@string/app_name"
/>

3.添加Person类

package com.zhangmiao.datastoragedemo;

/**
 * Created by zhangmiao on 2016/12/16.
 */
public class Person {

    public int _id;
    public String name;
    public int age;
    public String info;

    public Person() {

    }

    public Person(int _id,String name, int age, String info){
        this._id = _id;
        this.name = name;
        this.age = age;
        this.info = info;
    }
}

4.添加SharedPreferencesDBManager类

package com.zhangmiao.datastoragedemo;

import android.content.Context;
import android.content.SharedPreferences;

/**
 * Created by zhangmiao on 2016/12/19.
 */
public class SharedPreferencesDBManager {

    private Context mContext;
    private SharedPreferences mSharedPreferences;
    private final static String PREFRENCE_FILE_KEY = "com.zhangmiao.datastoragedemo.PREFRENCE_FILE_KEY";

    public SharedPreferencesDBManager(Context context){
        mContext = context;
        mSharedPreferences =mContext.getSharedPreferences
                (PREFRENCE_FILE_KEY, Context.MODE_PRIVATE);
    }

    public void writeData(Person person)
    {
        SharedPreferences.Editor editor = mSharedPreferences.edit();
        editor.putInt("id",person._id);
        editor.putString("name",person.name);
        editor.pu



 
分享到: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-05-26硅谷社交7--添加联系人--接收添加好友邀请,硅谷7--
  • 2017-05-26[原创]Eclipse 安卓开发几个异常的处理办法,eclipse安卓
  • 2017-05-26Android Studio:Failed to resolve ***,androidresolve
  • 2017-05-26Android之Activity系列总结(一)--Activity概览,android--activity
  • 2017-05-26Android中如何修改编译的资源ID值(默认值是0x7F...可以随意改成0x02~0x7E)
  • 2017-05-26EventBus简单使用教程
  • 2017-05-26Kotlin中when表达式的使用:超强的switch(KAD 13),kotlinkad
  • 2017-05-26Android TabHost使用,androidtabhost使用
  • 2017-05-222.6.4 DrawerLayout(官方侧滑菜单)的简单使用
  • 2017-05-26Android与HTML+JS交互入门

文章分类

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

最近更新的内容

    • 安卓开发学习经历2--《第一行代码》coolweather项目SQL语句同一个“陷阱”掉两次 注意转义字符等特殊字符正确书写 关于Id字段自增加体会,coolweather
    • Android 退出app,后台推送的服务也停止了,怎么可以做到不停止后台服务呢?,androidapp
    • 我的android学习经历9,android学习经历9
    • 关于Pacemaker集群配置的版本
    • 关于linux的busybox工具mdev的使用和声卡热插拔以及驱动挂载的总结
    • android列表停止滚动,加载图片,较为通用的一种办法,
    • Android常用命令行-adb,android-adb
    • Android开发学习——搭建开发环境,android搭建
    • android如何改变editText控件中部分文字的格式,androidedittext
    • 老人桌面===花花绿绿的桌面,老人桌面

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

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