安卓系统为应用提供了系统级的配置存储方案,它就是靠SharedPreferences接口来实现的,该接口存储的所有信息都是以名值对的形式保存,但其保存的数据类型也仅限于基本数据类型,如字符串、整形、布尔型等。这些配置最后会保存在一个XML文件中,每次打开应用时,这些保存的信息就会被加载进来,我们也可以在“管理应用程序”中将这些缓存数据清除。

SharedPreferences接口的常用方法如下:

SharedPreferences接口类方法
No 方法 类型 描述
1 public abstract SharedPreferences.Editor edit() 普通 使其可编辑,并获得编辑器对象
2 public abstract boolean contains(String key) 普通 判断key是否存在
3 public abstract Map<String,?>getAll() 普通 获得全部数据
4 public abstract boolean getBoolean(String key, boolean defValue) 普通 获得boolean值,若无,则设为defValue
5 public abstract float getFloat(String key, float defValue) 普通 获得float值,若无,则设为defValue
6 puclic abstract int getInt(String key, int defValue) 普通 获得int值,若无,则设为defValue
7 public abstract long getLong(String key, long defValue) 普通 获得long值,若无,则设为defValue
8 public abstract String getString(String key, String defValue) 普通 获得Sting值,若无,则设为defValue

SharedPreferences接口的方法getXxx()用来获取已经存储的值,而要写入新的名值对则需要获得它的编辑器接口SharedPreferes.Editor接口,即调用SharedPreferences接口的edit()方法即可获得。

SharedPreferences.Editor接口的常用方法如下:

No 方法 类型 描述
1 public abstract SharedPreferences.Editor clear() 普通 清除所有数据
2 public abstract boolean commit() 普通 提交更新的数据
3 public abstract SharedPreferences.Editor putBoolean(String key, Boolean value) 普通 保存boolean型数据
4 public abstract SharedPreferences.Editor putFloat(String key, float value) 普通 保存float型数据
5 public abstract SharedPreferences.Editor putInt(String key, int value) 普通 保存int型数据 
6 public abstract SharedPreferences.Editor putLong(String key, long value)  普通 保存long型数据 
7 public abstract SharedPreferences.Editor putString(String key, String value)  普通 保存String型数据 
8 public abstract SharedPreferences.Editor remove(String key)  普通 删除指定key的数据 

由于SharedPreferences和SharedPreferences.Editor都是接口,所以要想获得他们的实例化对象,还需要Activity类的方法和常量的支持

public static final int MODE_PRIVATE, public static final int MODE_WORLD_READBALE, public static final int MODE_WORLD_WRITEBALE常量和public SharedPreferences getSharedPreferences(String name, int mode)(其中name指保存的文件名称,mode指操作的模式)。

下面以一个实例加以说明:

 package com.wl.testsharedpreferences;

 import android.os.Bundle;
import android.app.Activity;
import android.content.SharedPreferences;
import android.view.Menu;
import android.view.TextureView;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView; public class MainActivity extends Activity implements OnClickListener { Button btn1,btn2;
SharedPreferences sp = null; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn1 = (Button) findViewById(R.id.btn1);
btn2 = (Button) findViewById(R.id.btn2); btn1.setOnClickListener(this);
btn2.setOnClickListener(this); sp = getSharedPreferences("mysp", Activity.MODE_PRIVATE);  //获得SharedPreferences实例
} @Override
public void onClick(View view) {
// TODO Auto-generated method stub
TextView tv = (TextView) findViewById(R.id.tv);
if(view == btn1) {
SharedPreferences.Editor editor = sp.edit();
editor.putString("author", "xiaowang");
editor.putInt("age", 25);
editor.commit();
tv.setText("Write successfully!");
} else if(view == btn2) {
tv.setText(sp.getString("author", "xiaozhang") + "," + sp.getInt("age", 20));
}
}
}
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" > <TextView
android:id="@+id/tv"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/> <Button
android:id="@+id/btn1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/btn1"/>  //string/btn1为"写名值对" <Button
android:id="@+id/btn2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/btn2"/>  //string/btn2为"读名值对" </LinearLayout>

从以上例子可以很容易的掌握SharedPreferences的用法。

注:当我们写入名值对后,一定记得要调用commit()函数,不然所写入的并未提交,也就无从读出了。

Android数据存储之SharedPreferences存储的更多相关文章

  1. Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (一) —— 总览

    Android数据的四种存储方式SharedPreferences.SQLite.Content Provider和File (一) —— 总览   作为一个完成的应用程序,数据存储操作是必不可少的. ...

  2. Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (三) —— SharePreferences

    除了SQLite数据库外,SharedPreferences也是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息.其存储位置在/data ...

  3. Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (四) —— ContentProvider

    ContentProvider是安卓平台中,在不同应用程序之间实现数据共享的一种机制.一个应用程序如果需要让别的程序可以操作自己的数据,即可采用这种机制.并且此种方式忽略了底层的数据存储实现,Cont ...

  4. Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (二) —— SQLite

    SQLite是一种转为嵌入式设备设计的轻型数据库,其只有五种数据类型,分别是: NULL: 空值 INTEGER: 整数 REAL: 浮点数 TEXT: 字符串 BLOB: 大数据 在SQLite中, ...

  5. (转)Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (三) —— SharePreferences

    除了SQLite数据库外,SharedPreferences也是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息.其存储位置在/data ...

  6. Android入门(九)文件存储与SharedPreferences存储

    原文链接:http://www.orlion.ga/578/ Android系统中主要提供了三种方式用于简单地实现数据持久化功能,即文件存储.SharedPreference存储以及数据库存储.当然, ...

  7. Android数据的四种存储方式

    作为一个完成的应用程序,数据存储操作是必不可少的.因此,Android系统一共提供了四种数据存储方式.分别是:SharePreference.SQLite.Content Provider和File. ...

  8. [Android]Android数据的四种存储方式

    存储方式 Android提供以下四种存储方式: SharePreference SQLite File ContentProvider Android系统中数据基本都是私有的,一般存放在“data/d ...

  9. [转][Android]Android数据的四种存储方式

    android.database.sqlite类 SQLiteQueryBuilder java.lang.Object android.database.sqlite.SQLiteQueryBuil ...

随机推荐

  1. mysql+ibatis 批量插入

    述:相比oracle批量插入,mysql批量插入就简单的多了,mysql支持values后面跟多条数据,进行批量插入,并且主键可以自增,不像oracle会遇到序列问题. 1.建表 CREATE TAB ...

  2. 给员工授予svn相关权限

    步骤: 了解:地址2.4是代码svn.地址2.16是文档svn 以授予 SVN地址是:http://172.16.2.16/svn/SystemNetworkBU  权限组为mam_group,是只读 ...

  3. 史航416第11次作业&总结

    作业1:冒泡排序 #include <stdio.h> ],int n); int main() { ],n,i; printf("输入一个整数n:"); scanf( ...

  4. Linux Svn 安装过程及配置

    重要的是第一步的安装,第二步配置可能没用,但是没试过,因为服务器上已经安装了第一步. 此处的第二步只为做个记录,说明一下里边的配置文件的用途. 3. 自己实际操作中的的配置记录(参照服务器别人的配置记 ...

  5. java中的 FileWriter类 和 FileReader类的一些基本用法

    1,FileWriter类(字符输出流类) |--用来写入字符文件的便捷类.此类的构造方法假定默认字符编码和默认字节缓冲区大小都是可接受的.要自己指定这些值,可以先在 FileOutputStream ...

  6. Android之数据库的创建

    一.SQLite介绍 SQLite 一个非常流行的嵌入式数据库,它支持 SQL 语言,并且只利用很少的内存就有很好的性能.此外它还是开源的,任何人都可以使用它.许多开源项目((Mozilla, PHP ...

  7. Fiddler抓包之IOS

    Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的"进出"Fiddler的数据(指cookie,html,j ...

  8. oracle分组后取每组第一条数据

    数据格式: 分组取第一条的效果: sql语句: SELECT * FROM ( ;

  9. ASP.NET应用中会话状态丢失及解决策略

    会话易丢失,解决办法 一. 了解下Web园 一个应用程序池默认是开启一个工作进程,但也可以开启多个工作进程,这样可提高性能,这个功能名为Web园,是小型的“Web农场”,您无需使用多台计算机来传送相同 ...

  10. Struts 2学习笔记——拦截器相关

    一.添加国际化支持 默认的struts-deault.xml文件中已经定义了国际化拦截器,内容如下 <!-定义国际化拦截器--> <interceptor name="i1 ...