初学Android,数据存储之SharedPreferences(四十一)

有时候,应用程序有少量数据需要保存,比如说是否使用振动,是否打开GPS等设置,对于这些小数据量的需求,没有必要使用数据库
Android提供了SharedPreferences接口,它用来读取程序的Preferences数据,它保存的数据主要是简单的key-vaule对
有如下方法来访问key-value对
boolean contains(String key)         判断是否包含特定key的数据
abstract Map<String,?> getAll()     获取SharedPreferences数据里面全部的key-value对
getXxx(String Key,xxx defValue)    判断是否包含特定key的数据,如果不包含,返回默认值得defValue,Xxx为数据类型


SharedPreferences本身没有提供写入数据的能力,而是通过内部接口调用edit()方法即可获取它所对应的Editor对象
Editor提供如下方法来向SharedPreferences写入数据
clear()                                        清空SharedPreferences所有数据
putXxx(String key,xxx value)     向SharedPreferences存入指定key对应的数据
remove(String key)                    向SharedPreferences删除指定key对应的数据
boolean commit()                      当Editor编辑完成后,调用该方法提交修改


通过Context提供的getSharedPreferences(String name,int mode) 来获取SharedPreferences
第二个参数有如下几个值:
Context.MODE_PRIVATE: 指定数据只能被本应用程序读写
Context.MODE_WORLD_READABLE: 指定数据能被其它应用程序读,但不能写
Context.MODE_WORLD_WRITEABLE: 指定数据能被其它应用程序读和写


下面程序向Preferences写入当前时间和一个随机数

package WangLi.IO.SharedPreferencesTest;

import java.util.Date;
import java.text.SimpleDateFormat;

import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class SharedPreferencesTest extends Activity {
	SharedPreferences preferences;
	SharedPreferences.Editor editor;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        //获取只能被本应用程序读,写的SharedPreferences对象
        preferences = getSharedPreferences("IO",MODE_PRIVATE);
        editor = preferences.edit();
        Button read = (Button)findViewById(R.id.read);
        Button write = (Button)findViewById(R.id.write);
        read.setOnClickListener(new OnClickListener()
        {
        	public void onClick(View arg0)
        	{
        		//读取字符串数据
        		String time = preferences.getString("time", null);
        		//读取int类型的数据
        		int randNum = preferences.getInt("random", 0);
        		String result = time == null ? "您暂时还未写入数据" 
        				: "写入时间为:" + time
        				+ "\n 上次生成的随机数为:" + randNum;
        		//使用Toast提示信息
        		Toast.makeText(SharedPreferencesTest.this, result, 5000).show();
        	}
        });
        write.setOnClickListener(new OnClickListener()
        {
        	public void onClick(View arg0)
        	{
        		SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日" + "hh:mm:ss");
        		//存入当前时间
        		editor.putString("time", sdf.format(new Date()));
        		//存入一个随机数
        		editor.putInt("random", (int)(Math.random() * 100));
        		//提交所有存入的数据
        		editor.commit();
        	}
        });
    }
}

存储好的Preferences可以在DDMS的File Explorer 中找到


导出文件打开,里面就是刚刚写入的Key-Value

<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 
<map>
  <int name="random" value="73" /> 
  <string name="time">2012年09月06日03:08:07</string> 
</map>



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值