您的位置:首页 > 移动开发 > Android开发

Android中的5中数据存储方式之SharedPreferences存储

2016-03-23 20:53 375 查看
Android中5中数据存储:SharedPreference存储、文件存储、SQLite数据库存储、ContentProvider存储和网络存储。

一、SharedPreferences存储

在android中想要实现配置信息的保存则需要使用该SharedPreferences完成。

该存储器保存信息是按照“Key=Value”的形式进行保存的。它只能保存一些基本的数据类型,如字符串、整型、布尔型等。

SharedPreferences存储特点:

1.是一种轻型的数据存储方式(android自带的)

2.本质是基于XML文件存储key-value键值对数据

3.通常用来存储一些简单的配置信息(很少,所以没有必要采用数据库),(保存密码,用户名等)

如何使用,它只可以取数据而不可以存储和修改,存储修改是通过Editor对象实现。

实现SharedPreferences存储的步骤如下:

1.获得SharedPreferences对象

2.获得SharedPreferences.Editor对象

3.通过Editor接口的putXxx方法保存key-value对其中Xxx表示不同的数据类型

4.通过Editor接口的commit方法保存key-value对

SharedPreferences接口的常用方法

//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型数据,并指定默认值
//5.public abstract float getFloat(String key,float defValue)  普通类型 取出float型数据,并指定默认值
//6.public abstract int getInt(String key,int defValue)  普通类型 取出int型数据,并指定默认值
//7.public abstract long getIong(String key,long defValue)  普通类型 取出long型数据,并指定默认值
//8.public abstract String getString(String key,String defValue)  普通类型 取出String型数据,并指定默认值


我们在进行数据的写入时,首先要通过SharedPreferences类所提供的edit()方法使其处于可编辑的状态,方法返回的对象类型是android.content.SharedPreferences.Editor接口实例,该接口的常用方法如下:

//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两个都是接口,要想取得SharedPreferences接口的实例化对象,还需要Activity类中的几个常量和方法的支持。如下所示:

Activity类对SharedPreferences接口的支持

1.public static final int MODE_PRIVATE 常量 创建的文件只能被一个应用程序调用,或者被具有相同的ID的应用程序访问

2.public static final int MODE_WORLD_READABLE 常量 允许其他应用程序读取文件

3.public static final int MODE_WORLD_WRITEABLE 常量 允许其他应用程序修改文件

4.public SharedPreferences getSharedPreferences(String name,int mode) 普通类型 指定保存操作的文件名称,同 时指定操作的模式,设置的内容可以是0、MODE_PRIVATE
、MODE_WORLD_READABLE 、MODE_WORLD_WRITEABLE

下面来练习一个例子:向文件中保存两种数据:String和int 型。

package com.administrator.sharedpreferencestest;

import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;

/**
* Created by Administrator on 2016/3/23.
*/
public class SavedDataActivity extends Activity{
private static final String FILENAME="HelloWorld";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//指定操作的文件名称和指定操作的模式
SharedPreferences share=super.getSharedPreferences(FILENAME, Activity.MODE_PRIVATE);
SharedPreferences.Editor editor=share.edit();//编辑文件
editor.putString("author","qinshihuang");
editor.putInt("age",2275);
editor.commit();
}
}
利用getSharedPreferences()方法取得SharedPreferences对象,利用此对象取得SharedPreferences.Editor接口的对象进行数据的设置,最后commit提交。

让我们来再写一个例子,在这个里面我们获取信息

布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/tv1"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/tv2"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>


逻辑代码:

package com.administrator.sharedpreferencestest;

import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.widget.TextView;

/**
* Created by Administrator on 2016/3/23.
*/
public class LoadDataActivity extends Activity {
private static final String FILENAME="EMPEROR";
private TextView tv1;
private TextView tv2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_loaddata);

tv1= (TextView) findViewById(R.id.tv1);
tv2= (TextView) findViewById(R.id.tv2);

SharedPreferences share=super.getSharedPreferences(FILENAME,Activity.MODE_PRIVATE);
tv1.setText("皇帝:"+share.getString("emperor","秦始皇"));
tv2.setText("年龄:"+share.getInt("age",2275));
}
}


效果如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: