Android 数据存储与IO之SharedPreferences的使用

本文的主要内容是介绍Android 数据存储与IO之SharedPreferences的使用,方便今后使用。

1.MainActivity.java

public class MainActivity 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_PRIVATE);
		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(MainActivity.this, result
						, Toast.LENGTH_SHORT).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();
			}
		});
	}
}

2.布局文件:main.xml

<?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"
	android:gravity="center_horizontal">
	
     <TextView  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"  
        android:layout_marginTop="60dip"  
        android:textStyle="bold"  
        android:textSize="20dip"  
        android:text="数据存储SharedPreferences测试"   
        android:layout_gravity="center"/>  
	<Button 
		android:id="@+id/write"
		android:layout_width="match_parent" 
		android:layout_height="wrap_content" 
		android:text="写入数据"
		/>
	<Button 
		android:id="@+id/read"
		android:layout_width="match_parent" 
		android:layout_height="wrap_content" 
		android:text="读取数据"
		/>	
</LinearLayout>

补充:

SharedPreferences是Android SDK中最容易理解和使用的存储技术。保存key-value对首先要指定一个文件名,然后使用putString的方法指定key和value。SharedPreferences也采用了同样的方法。

  1. 使用Activity.getSharedPreferences方法获得SharedPreferences对象。其中存储key-value的文件名称由getSharedPreferences方法的第一个参数指定。
  2. 使用SharedPreferences.edit方法获得SharedPreferences.Edit对象。
  3. 通过SharedPreferences.Editor.putXxx方法保存key-value对。
  4. 通过SharedPreferences.Editor.commit方法key-value对。commit方法相当于数据库事件中的提交(commit)操作,只有在任务结束后提交,才会将数据真正保存在数据库中。保存key-value也是一样,在使用putXxx方法指定了key-value对后,必须调用commit方法才能将key-value对真正保存在相应的文件中。

获取SharedPreferences的两种方式:
1 调用Context对象的getSharedPreferences()方法
2 调用Activity对象的getPreferences()方法
两种方式的区别:
调用Context对象的getSharedPreferences()方法获得的SharedPreferences对象可以被同一应用程序下的其他 组件共享.
调用Activity对象的getPreferences()方法获得的SharedPreferences对象只能在该Activity中使用.
 
SharedPreferences的四种操作模式:
Context.MODE_PRIVATE
Context.MODE_APPEND
Context.MODE_WORLD_READABLE
Context.MODE_WORLD_WRITEABLE
 
Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容
Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件.
Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用来控制其他应用是否有权限读写该文件.
MODE_WORLD_READABLE:表示当前文件可以被其他应用读取.
MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入.
将数据保存至SharedPreferences:
SharedPreferences preferences=getSharedPreferences("user",Context.MODE_PRIVATE);
Editor editor=preferences.edit();
String name="xixi";
String age="22";
editor.putString("name", name);
editor.putString("age", age);
editor.commit();

从SharedPreferences获取数据:
SharedPreferences preferences=getSharedPreferences("user", Context.MODE_PRIVATE);
String name=preferences.getString("name", "defaultname");
String age=preferences.getString("age", "0");

记录应用程序的使用次数
public class MainActivity extends Activity
{
	SharedPreferences preferences;
	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		preferences = getSharedPreferences("count"
			, MODE_PRIVATE);
		// 读取SharedPreferences里的count数据
		int count = preferences.getInt("count", 0);
		// 显示程序以前使用的次数
		Toast.makeText(this, "程序以前被使用了" + count + "次。"
				, Toast.LENGTH_LONG).show();
		SharedPreferences.Editor editor = preferences.edit();
		// 存入数据
		editor.putInt("count", ++count);
		// 提交修改
		editor.commit();
	}
}



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值