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

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));
    }
}

效果如下:





  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值