本文为网络资料整理,参考文章:
http://blog.youkuaiyun.com/jdsjlzx/article/details/19168643
http://www.tuicool.com/articles/Ery6Zr
一.存储方式:
SharePreferences是使用键值对的方式来存储数据的,也就是保存数据的时候需要给这条数据提供一个对应的键,这样在读取数据的时候就可以通过这个键把相应的值取出来。而且SharePreferences支持多种不同的数据类型存储,如整形,字符串等
二..获得sharedPreferences对象:
1.Context类中的getSharePreferences()方法:该方法接收2个参数,一个参数用于指定SharePreferences文件的名称,如果指定的文件不存在则会创建一个,SharePreferences文件都是存放在/data/data/<packagename>/shared_prefs/目录下的。第二个参数用于指定操作模式,主要有2种模式可选,MODE_PRIVATE和MODE_MULTI_PROCESS。 MODE_PRIVATE仍然是默认的操作模式,和直接传入0效果是相同的,表示只有当前的应用程序才可以对这个 SharePreferences文件进行读写。 MODE_MULTI_PROCESS则一般用于会有多个进程中对同一个 SharePreferences文件进行读写的情况。
2.Activity类中的getPreferences()方法:这个方法和Context中的 get SharePreferences()方法很类似,不过只接收一个操作模式参数,因为使用这个方法时会自动将当前活动的类名作为 SharePreferences文件名。
3.PreferenceManager类中的getDefaultSharedPreferences()方法:这是一个静态方法,它接收一个Context参数,并自动使用当前应用程序的包名作为前缀来命名 SharePreferences文件。
三.存取
//声明 初始化 private SharedPreferences sp; private SharedPreferences.Editor editor; //MODE还有其它模式
public static int MODE = Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE;//文件为mySp 存放在/data/data/<packagename>/shared_prefs/目录下的 sp=getSharedPreferences("mySp", MODE); editor=sp.edit(); //存 还有一些其它类型editor.putString("content",""); editor.commit(); //取String content=sp.getString("content",""); 四.两个应用之间共享数据 //提供方应用public class MainActivity extends ActionBarActivity implements View.OnClickListener{ private SharedPreferences sp; private SharedPreferences.Editor editor; private TextView tv_content; private Button btn_write,btn_clear; public static int MODE = Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); sp=getSharedPreferences("mySp", MODE); editor=sp.edit(); tv_content= (TextView) findViewById(R.id.tv_content); btn_write= (Button) findViewById(R.id.btn_write); btn_write.setOnClickListener(this); btn_clear= (Button) findViewById(R.id.btn_clear); btn_clear.setOnClickListener(this); String content=sp.getString("content",""); tv_content.setText(content); } @Override public void onClick(View v) { switch (v.getId()){ case R.id.btn_write: editor.putString("content",getString(R.string.content)); editor.commit(); String content=sp.getString("content",""); tv_content.setText(content); break; case R.id.btn_clear: editor.putString("content",""); editor.commit(); String content2=sp.getString("content",""); tv_content.setText(content2); break; default: break; } } } //接收方应用public class MainActivity extends ActionBarActivity { private TextView tv_content; private SharedPreferences sp; //此为提供方的包名 private static String PREFERENCE_PACKAGE="com.example.yu.sharepreferencedemo1"; public static int MODE = Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE; Context c; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); try { c=this.createPackageContext(PREFERENCE_PACKAGE, Context.CONTEXT_IGNORE_SECURITY); } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } sp=c.getSharedPreferences("mySp",MODE); tv_content= (TextView) findViewById(R.id.tv_content); String content=sp.getString("content",""); tv_content.setText(content); } }