android学习十(android的SharePreferences存储)
不同于文件的存储方式,SharePreferences是使用键值对的方式来存储数据的,也就是保存数据的时候需要给这条数据提供一个对应的键,这样在读取数据的时候就可以通过这个键把相应的值取出来。而且SharePreferences支持多种不同的数据类型存储,如果存储的数据书整形类型,读取出来的数据也是整形的,存储的数据是一个字符串,读取出来的数据仍然是一个字符串。
要想使用SharePreferences来存储数据,首先要获取到SharePreferences对象,android系统中主要提供了3种方式用于得到SharePreferences对象。
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中的getSharePreferences()方法很类似,不过只接收一个操作模式参数,因为使用这个方法时会自动将当前活动的类名作为SharePreferences文件名。
3.PreferenceManager类中的getDefaultSharedPreferences()方法:这是一个静态方法,它接收一个Context参数,并自动使用当前应用程序的包名作为前缀来命名SharePreferences文件。
得到SharePreferences对象之后,就可以开始向SharePreferences文件中存储数据了,主要分为三部实现:
1.调用SharePreferences对象的edit()方法来获取一个SharePreferences.Editor对象。
2.向SharePreferences.Editor对象中添加数据,比如添加一个布尔类型数据就使用putBoolean方法。
3.调用commit()方法将添加的数据提交,从而完成数据存储操作。
将数据保存到SharePreferences中
下面我们来个小例子测试下上面的内容吧,新建一个SharePreferencesTest项目,然后修改activity_main.xml中的代码,如下所示:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <Button android:id="@+id/save_data" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="save data" /> </LinearLayout>
上面的代码比较简单,就不多说了,下面修改MainActivity类里面的代码,如下:
package com.jack.sharedpreferencestest; import android.app.Activity; import android.content.SharedPreferences; import android.os.Bundle; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class MainActivity extends Activity { private Button saveData; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); saveData=(Button) findViewById(R.id.save_data); saveData.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub //获得SharedPreferences.Editor对象 SharedPreferences.Editor editor=getSharedPreferences("share", MODE_PRIVATE).edit(); editor.putString("name", "jack"); editor.putInt("age", 22); editor.putBoolean("married", false); editor.commit();//提交数据 } }); } @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; } }
运行程序,点击save data按钮,这时候的数据已经保存了,我们借助File Exploer来进行查看,进入到/data/data/com.jack.sharedpreferencestest/shared_prefs/目录下,可以看到如下一个share文件
把文件导出来,查看内容如下所示:
注意:有时候我们运行程序查看file explorer的时候,发现里面没有任何的文件,这时候可能是由于我们没在devices中选择正确的运行的进程,只要在下面的地方点击当前运行程序的包名就行了,如下黑色线圈起来的地方:
这样file explorer就会显示目录结构了。
从SharePreferences中读取数据
从SharePreferences读取数据比较的简单,SharePreferences对象提供了一系列的get方法用于对存储的数据进行读取,每种get方法都对应SharePreferences.Editor中的一种put方法。这些get方法都接收两个参数,第一个参数是键,传入存储数据时使用的键就可以得到相应的值了,第二个参数是默认值,即表示当传入的键找不到相应的值时,会以什么样的默认值进行返回。
在上面的项目中进行修改,首先修改activity_main.xlm中的代码,如下所示:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <Button android:id="@+id/save_data" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="save data" /> <Button android:id="@+id/restore_data" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="restore data" /> </LinearLayout>
修改MainActivity中的代码:
package com.jack.sharedpreferencestest; import android.app.Activity; import android.content.SharedPreferences; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class MainActivity extends Activity { private Button saveData; private Button restoreData; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); saveData=(Button) findViewById(R.id.save_data); restoreData=(Button) findViewById(R.id.restore_data); saveData.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub //获得SharedPreferences.Editor对象 SharedPreferences.Editor editor=getSharedPreferences("share", MODE_PRIVATE).edit(); editor.putString("name", "jack"); editor.putInt("age", 22); editor.putBoolean("married", false); editor.commit();//提交数据 } }); restoreData.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { // TODO Auto-generated method stub SharedPreferences pref=getSharedPreferences("share", MODE_PRIVATE); String name=pref.getString("name", null); int age=pref.getInt("age", 0); boolean married=pref.getBoolean("married", false); Log.d("MainActivity", "name is "+name); Log.d("MainActivity", "age is "+age); Log.d("MainActivity", "married is "+married); } }); } @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; } }
运行程序,点击restore data按钮,查看日志如下所示:
上面的小例子就是读取SharePreferences文件里面的内容的,可以举一反三哦。
关于SharePreferences文件的使用就总结到这,下面一篇我将总结下android数据SQLite的使用。
转载请注明:http://blog.csdn.net/j903829182/article/details/40952301
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。