android数据存储之SharedPreferences方式

在Android中,可供选择的存储方式有SharedPreferences、文件存储、SQLite数据库方式、内容提供器(Content provider)和网络。

今儿个咱学SharedPreferences:

有些时候,应用程序有少量的数据需要保存,而且这些数据的格式很简单:都是普通的字符串、标量类型的值等,比如应用程序的各种配置信息、小游戏的于玩家积分等,对于这种数据,提供了SharedPreferences进行保存;可以想象它是一个小小的Cookie,它通过用键值对的方式把简单数据类型(boolean、int、float、long和String)存储在应用程序的私有目录下(data/data/包名/shared_prefs/)自己定义的xml文件中。

1、说明

它提供一种轻量级的数据存储方式,通过eidt()方法来修改里面的内容,通过Commit()方法来提交修改后的内容。

2、重要方法

public abstract boolean contains (Stringkey) :检查是否已存在该文件,其中key是xml的文件名。

edit():为preferences创建一个编辑器Editor,通过创建的Editor可以修改preferences里面的数据,但必须执行commit()方法。

getAll():返回preferences里面的多有数据。

getBoolean(String key, boolean defValue):获取Boolean型数据

getFloat(String key, float defValue):获取Float型数据

getInt(String key, int defValue):获取Int型数据

getLong(String key, long defValue):获取Long型数据

getString(String key, String defValue):获取String型数据

registerOnSharedPreferenceChangeListener(SharedPreferences.OnSharedPreferenceChangeListenerlistener):注册一个当preference发生改变时被调用的回调函数。

unregisterOnSharedPreferenceChangeListener(SharedPreferences.OnSharedPreferenceChangeListenerlistener):删除当前回调函数。

3、重要接口SharedPreferences.Editor

用于修改SharedPreferences对象的内容,所有更改都是在编辑器所做的批处理,而不是复制回原来的SharedPreferences或持久化存储,直到你调用commit(),才将持久化存储。重要方法:

clear():清除内容。

  commit():提交修改

  remove(String key):删除preference

下面通过一个简单的实例来示范如何向SharedPreferences中写入、读取数据;

布局文件很简单:

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center_horizontal" > <Button android:id="@+id/write" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/write" /> <Button android:id="@+id/read" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/read" /> </LinearLayout>

程序代码如下:

package org.crazyit.io; import java.text.SimpleDateFormat; import java.util.Date; 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; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // 获取只能被本应用程序读、写的SharedPreferences对象 preferences = getSharedPreferences("crazyit", MODE_WORLD_READABLE); editor = preferences.edit(); Button read = (Button) findViewById(R.id.read); Button write = (Button) findViewById(R.id.write); read.setOnClickListener(new OnClickListener() { @Override 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() { @Override 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(); } }); } } 该程序就是简单的实现写入数据读取数据;

简单的界面如下图:



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值