SharedPreferences是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息。其存储位置在/data/data/<包名>/shared_prefs目录下。SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过Editor对象实现。实现SharedPreferences存储的步骤如下:
  一、根据Context获取SharedPreferences对象

mysp = getSharedPreferences("mysp", MODE_PRIVATE);
  二、利用edit()方法获取Editor对象。

Editor e = mysp.edit();
  三、通过Editor对象存储key-value键值对数据。

e.putBoolean(KEY_SHOW_DIALOG_AT_START, isChecked);

  四、通过commit()方法提交数据。

e.commit();
  具体实现代码如下:

package com.example.l014shareprefrence;

import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.text.AlteredCharSequence;
import android.util.Log;
import android.view.Menu;
import android.widget.CheckBox;
import android.widget.Checkable;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;

public class MainActivity extends Activity {


	private CheckBox checkBox;
	private SharedPreferences mysp;
	//使用常量的好处是多处使用时不会出现笔误,容易查错
   private static final String KEY_SHOW_DIALOG_AT_START= "showWelcomeDialog";
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		checkBox = (CheckBox) findViewById(R.id.checkBox);
		mysp = getSharedPreferences("mysp", MODE_PRIVATE);
		
		checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
			
			@Override
			public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
					
					Editor e = mysp.edit();
					e.putBoolean(KEY_SHOW_DIALOG_AT_START, isChecked);
					e.commit();
			}
		});
	
		checkBox.setChecked(mysp.getBoolean(KEY_SHOW_DIALOG_AT_START, false));
		
		if(checkBox.isChecked())
		{
			new AlertDialog.Builder(this).setTitle("欢迎").setPositiveButton("关闭", null).show();
		}
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

}


这段代码执行过后,即在/data/data/包名/shared_prefs目录下生成了一个SP.xml文件,一个应用可以创建多个这样的xml文件。如图所示: 


SharedPreferences 能储存map吗 sharedpreferences存储路径_ide

在程序代码中,通过getXXX方法,可以方便的获得对应Key的Value值,如果key值错误或者此key无对应value值,SharedPreferences提供了一个赋予默认值的机会,以此保证程序的健壮性。 

  SharedPreferences对象与SQLite数据库相比,免去了创建数据库,创建表,写SQL语句等诸多操作,相对而言更加方便,简洁。但是SharedPreferences也有其自身缺陷,比如其职能存储boolean,int,float,long和String五种简单的数据类型,比如其无法进行条件查询等。所以不论SharedPreferences的数据存储操作是如何简单,它也只能是存储方式的一种补充,而无法完全替代如SQLite数据库这样的其他数据存储方式。

 



SharedPreferences是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息。其存储位置在/data/data/<包名>/shared_prefs目录下。SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过Editor对象实现。实现SharedPreferences存储的步骤如下:
  一、根据Context获取SharedPreferences对象

mysp = getSharedPreferences("mysp", MODE_PRIVATE);
  二、利用edit()方法获取Editor对象。

Editor e = mysp.edit();
  三、通过Editor对象存储key-value键值对数据。

e.putBoolean(KEY_SHOW_DIALOG_AT_START, isChecked);

  四、通过commit()方法提交数据。

e.commit();
  具体实现代码如下:

package com.example.l014shareprefrence;

import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.text.AlteredCharSequence;
import android.util.Log;
import android.view.Menu;
import android.widget.CheckBox;
import android.widget.Checkable;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;

public class MainActivity extends Activity {


	private CheckBox checkBox;
	private SharedPreferences mysp;
	//使用常量的好处是多处使用时不会出现笔误,容易查错
   private static final String KEY_SHOW_DIALOG_AT_START= "showWelcomeDialog";
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		checkBox = (CheckBox) findViewById(R.id.checkBox);
		mysp = getSharedPreferences("mysp", MODE_PRIVATE);
		
		checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
			
			@Override
			public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
					
					Editor e = mysp.edit();
					e.putBoolean(KEY_SHOW_DIALOG_AT_START, isChecked);
					e.commit();
			}
		});
	
		checkBox.setChecked(mysp.getBoolean(KEY_SHOW_DIALOG_AT_START, false));
		
		if(checkBox.isChecked())
		{
			new AlertDialog.Builder(this).setTitle("欢迎").setPositiveButton("关闭", null).show();
		}
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

}


这段代码执行过后,即在/data/data/包名/shared_prefs目录下生成了一个SP.xml文件,一个应用可以创建多个这样的xml文件。如图所示: 


SharedPreferences 能储存map吗 sharedpreferences存储路径_ide

在程序代码中,通过getXXX方法,可以方便的获得对应Key的Value值,如果key值错误或者此key无对应value值,SharedPreferences提供了一个赋予默认值的机会,以此保证程序的健壮性。 

  SharedPreferences对象与SQLite数据库相比,免去了创建数据库,创建表,写SQL语句等诸多操作,相对而言更加方便,简洁。但是SharedPreferences也有其自身缺陷,比如其职能存储boolean,int,float,long和String五种简单的数据类型,比如其无法进行条件查询等。所以不论SharedPreferences的数据存储操作是如何简单,它也只能是存储方式的一种补充,而无法完全替代如SQLite数据库这样的其他数据存储方式。