zoukankan      html  css  js  c++  java
  • SharedPreferences存储

    不同于文件存储的方式,SharedPreferences 是使用键值对的方式来存储数据的。也就是说,当保存一条数据的时候,需要给这条数据提供一个对应的键,这样在读取数据的时候就可以通过这个键吧相应的值取出来。

    而且SharedPreferences还支持多种不同的数据类型存储,如果存储的数据类型是整型,那么读出来的数据也是整型的;如果存储的数据是字符串,那么读取出来的数据仍然是字符串。

    这样你应该就能明显地感觉到,使用 SharedPreferences来进行数据持久化要比使用文件方便很多,下面我们就来看一下它的具体用法吧。

    将数据存储到 SharedPreferences 中
    要想使用SharedPreferences来存储数据,首先需要获取到SharedPreferences对象。Android中主要提供了三种方法用于得到 SharedPreferences 对象。
    1. Context 类中的 getSharedPreferences()方法
    此方法接收两个参数,第一个参数用于指定 SharedPreferences文件的名称,如果指
    定的文件不存在则会创建一个,SharedPreferences 文件都是存放在/data/data//shared_prefs/目录下的。第二个参数用于指定操作模式,主要有两种模式可以选
    择,MODE_PRIVATE 和 MODE_MULTI_PROCESS。MODE_PRIVATE 仍然是默认的操
    作模式,和直接传入 0 效果是相同的,表示只有当前的应用程序才可以对这个
    SharedPreferences文件进行读写。MODE_MULTI_PROCESS则一般是用于会有多个进程中
    对同一个 SharedPreferences文件进行读写的情况。类似地,MODE_WORLD_READABLE
    和 MODE_WORLD_WRITEABLE 这两种模式已在 Android 4.2 版本中被废弃。

    2. Activity 类中的 getPreferences()方法
    这个方法和 Context 中的 getSharedPreferences()方法很相似,不过它只接收一个操
    作模式参数,因为使用这个方法时会自动将当前活动的类名作为 SharedPreferences 的文
    件名。

    3. PreferenceManager 类中的 getDefaultSharedPreferences()方法
    这是一个静态方法,它接收一个 Context 参数,并自动使用当前应用程序的包名作
    为前缀来命名 SharedPreferences 文件。
    得到了 SharedPreferences对象之后,就可以开始向 SharedPreferences文件中存储数据了,
    主要可以分为三步实现。

    1. 调用 SharedPreferences 对象的 edit()方法来获取一个 SharedPreferences.Editor 对象。
    2. 向 SharedPreferences.Editor 对象中添加数据,比如添加一个布尔型数据就使用
      putBoolean 方法,添加一个字符串则使用 putString()方法,以此类推。
    3. 调用 commit()方法将添加的数据提交,从而完成数据存储操作。

    新建一个 SharedPreferencesTest项目,然后修改 activity_main.xml
    中的代码,如下所示:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    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 中的代码,如下所示:

    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) {
    				SharedPreferences.Editor editor = getSharedPreferences("data",
    						MODE_PRIVATE).edit();
    						editor.putString("name", "Tom");
    						editor.putInt("age", 28);
    						editor.putBoolean("married", false);
    						editor.commit();
    						}
    					});
    		}
    }
    

    可以看到,这里首先给按钮注册了一个点击事件,然后在点击事件中通过
    getSharedPreferences()方法指定SharedPreferences的文件名为data,并得到了SharedPreferences.Editor对象。接着向这个对象中添加了三条不同类型的数据,最后调用 commit()方法进行提交,从而完成了数据存储的操作。

  • 相关阅读:
    计算机网络通信
    javap查看class文件
    JDK动态代理与CGLib动态代理
    error the @annotation pointcut expression is only supported at Java 5 compliance
    redis清空缓存
    利用HttpURLConnection发送请求
    linux下用命令导出mysql表数据
    adb push和pull使用
    mysqld.exe占比cpu 100% 解决方案
    养成好习惯
  • 原文地址:https://www.cnblogs.com/CCCrunner/p/11781998.html
Copyright © 2011-2022 走看看