首页 > 代码库 > android学习十(android的SharePreferences存储)
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=http://www.mamicode.com/(Button) findViewById(R.id.save_data);>
运行程序,点击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=http://www.mamicode.com/(Button) findViewById(R.id.save_data);>
运行程序,点击restore data按钮,查看日志如下所示:
上面的小例子就是读取SharePreferences文件里面的内容的,可以举一反三哦。
关于SharePreferences文件的使用就总结到这,下面一篇我将总结下android数据SQLite的使用。
转载请注明:http://blog.csdn.net/j903829182/article/details/40952301
android学习十(android的SharePreferences存储)