SharedPreferences存储学习笔记
来源:互联网 发布:日本推理小说 知乎 编辑:程序博客网 时间:2024/05/05 19:05
SharedPreferences存储简介
不同于内部存储,SharedPreferences是使用键值对的方式来存储数据的。即每当我们保存一条数据的时候,需要为这条数据提供一个对应的键,然后通过这个键把对应的值取出来。SharedPreferences类提供了一个通用的框架,以便我们能够保存和检索原始数据类型的永久性键值对。我们可以使用SharedPreferences来保存任意类型的数据。当我们存储的数据类型是整型数据,那么读取出来的数据也是整形数据。
因此,使用SharedPreferences进行数据持久化要比内部存储便捷得多。
将数据存储到SharedPreferences中
要使用SharedPreferences存储数据,首先需要获取应用得SharedPreferences对象。
Android中主要提供了三种方法用于得到SharedPreferences对象:
使用Context类中的getSharedPreferences()方法:如果我们需要多个按名称识别的Preferences文件,应该使用这个方法。此方法接收两个参数,第一个参数用于指定SharedPreferences文件的名称,如果指定的文件不存在,系统则会帮我们创建一个;第二个参数是用于用于指定操作模式,目前只有MODE_PRIVATE这一种模式,与直接输入0的效果相同,是默认的操作模式,表示只有当前的应用程序才可以对这个SharedPreferences文件进行读写。
使用Activity类的getPreferences()方法,这个方法只接收一个操作模式参数。如果我们只需要一个用于Actiivity的Preferences文件,应该使用这个方法。因为使用这个方法时会自动将当前活动的类名作为SharedPreferences的文件名,因此无需像getSharedPreferences()方法一样提供名称参数。
- 使用PreferencesManager中的getDefaultSharedPreferences()方法,这是一个静态方法,接收一个Context参数,并自动使用当前应用程序的包名作为前缀来命名SharedPreferences文件。
获得SharedPreferences对象后,可以通过三个步骤向SharedPreferences文件存储数据。
调用edit()方法获取SharedPreferences.Editor对象。
使用putXXX()方法向SharedPreferences.Editor对象添加数据,XXX可以是任意基本数据类型。
使用commit()或者apply()方法将添加的数据提交。
示例:
布局文件:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/activity_main" 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>
java文件
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button saveData = (Button) findViewById(R.id.save_data); saveData.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //调用edit()方法获取Editor对象 //并指定SharedPreferences文件名为data SharedPreferences.Editor editor = getSharedPreferences("data", MODE_PRIVATE) .edit(); //调用putXXX()方法向Editor对象中添加数据 editor.putString("name", "vinfai"); editor.putInt("age", 21); editor.putBoolean("married", false); //调用commit()方法提交数据 editor.commit(); } }); }}
运行程序,使用Android Device Montior的File Explore来查看存储的数据。
Android Device Montior用法:http://blog.csdn.net/vinfai/article/details/55259354
在shared_prefs文件夹下生成了一个data文件。
从SharedPreferences中提取数据
SharedPreferences对象中提供了一系列的get()方法,用于对存储数据的读取,与SharedPreferences的putXX()方法一样,get()方法可以读取任意基本数据类型的数据。这些get()方法接收两个参数,第一个是键,传入存储数据时使用的键可以得到该键的对应值;第二个参数是默认值,即表示当传入的键找不到对应值的时候,返回默认值。
修改刚刚的实例:
布局文件:
.. <Button android:id="@+id/restore_data" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Restore data" /> ..<LinearLayout
java文件
...Button resotoreData = (Button) findViewById(R.id.restore_data); resotoreData.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { SharedPreferences preferences = getSharedPreferences("data", MODE_PRIVATE); String name = preferences.getString("name", ""); int age = preferences.getInt("age", 0); boolean married = preferences.getBoolean("married", false); Log.d("MainActivity", "name is " + name); Log.d("MainActivity", "age is " + age); Log.d("MainActivity", "married is" + married); } }); ...
运行程序后,通过LOG可以看到成功读取存储的数据。
- SharedPreferences存储学习笔记
- android 数据存储SharedPreferences 学习笔记
- Android学习笔记——SharedPreferences存储
- android学习---SharedPreferences存储
- 基础学习-SharedPreferences存储
- Android学习笔记(八)-使用SharedPreferences进行数据存储
- Android学习笔记_8_使用SharedPreferences存储数据
- android学习笔记之——存储方式之SharedPreferences
- Android学习笔记十二.Android数据存储与IO.SharedPreferences
- Android学习笔记之数据的共享存储SharedPreferences
- 安卓学习笔记<一>:数据存储之SharedPreferences
- android学习笔记5 - SharedPreferences数据存储技术
- Android学习笔记-数据存储-SharedPreferences和File
- android学习笔记——SharedPreferences数据存储
- Android编程学习笔记 之 SharedPreferences数据存储
- Android学习笔记(40):SharedPreferences存储key-value对
- Sharedpreferences学习笔记
- SharedPreferences---Android学习笔记
- 自定义Topbar
- Codeforces Round #397 Problem E. Tree Folding 解题报告
- 搭建Apache服务器(配置)
- 数据库配置文件加密
- uC/OS的消息邮箱使用经验
- SharedPreferences存储学习笔记
- C++宏定义详解
- Android图片色彩处理ColorMatrix
- Appium学习记录01
- Glide-图片预处理(圆角,高斯模糊等)
- Sevlet篇之HttpServlet 请求 回应详解
- PHP:微信获取token,openid
- flume-ng负载均衡load-balance、failover集群搭建
- 网点推广策划方案