Android——SharedPreFerences存储

不同于文件的存储方式,SharedPreferences是使用键值对的方式来存储数据的。也就是说当保存一条数据的时候,需要给这条数据提供一个对应的键,这样在读取数据的时候就可以通过这个键把相应的值取出来。而且 SharedPreferences还支持多种不同的数据类型存储, 如果存储的数据类型是整型,那么读取出来的数据也是整型的,存储的数据是一个字符串, 读取出来的数据仍然是字符串。

要想使用SharedPreferences来存储数据,首先需要获取到SharedPreferences对象。Android 中主要提供了三种方法用于得到 SharedPreferences对象。

  1. Context类中的 getSharedPreferences()方法
    此方法接收两个参数,第一个参数用于指定 SharedPreferences文件的名称,如果指定的文件不存在则会创建一个,SharedPreferences 文件都是存放在/data/data//shared_prefs/目录下的。第二个参数用于指定操作模式,目前只有MODE_PRIVATE这一种操作模式,和直接传入 0 效果是相同的,表示只有当前的应用程序才可以对这个 SharedPreferences文件进行读写。
  2. Activity类中的 getPreferences()方法
    这个方法和 Context中的 getSharedPreferences()方法很相似,不过它只接收一个操 作模式参数,因为使用这个方法时会自动将当前活动的类名作为 SharedPreferences的文件名。
  3. PreferenceManager类中的 getDefaultSharedPreferences()方法
    这是一个静态方法,它接收一个 Context参数,并自动使用当前应用程序的包名作为前缀来命名 SharedPreferences文件。
    **得到了SharedPreferences对象之后,就可以开始向SharedPreferences文件中存储数据了, 主要可以分为三步实现。 **
  4. 调用 SharedPreferences对象的 edit()方法来获取一个 SharedPreferences.Editor对象。
  5. 向 SharedPreferences.Editor 对象中添加数据,比如添加一个布尔型数据就使用 putBoolean方法,添加一个字符串则使用 putString()方法,以此类推。
  6. 调用 apply()方法将添加的数据提交,从而完成数据存储操作。

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

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
    <Button
        android:id="@+id/save_data"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        tools:ignore="MissingConstraints"
        android:text="save data"/>
    <Button
        android:id="@+id/restore_data"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        tools:ignore="MissingConstraints"
        android:text="Restore data"/>

</LinearLayout>

地放置了两个按钮,一个用于将一些数据存储到 SharedPreferences文件当中。一个用于将数据读出来,然后修改 MainActivity中的代码,如下所示

package com.example.sharedpreferencestest;

import android.content.SharedPreferences;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button button = findViewById(R.id.save_data);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                SharedPreferences.Editor editor = getSharedPreferences("data", MODE_PRIVATE).edit();
                //放数据时putXXX()方法第一个参数时你自己定义的键值,第二个参数时你输入的内容
                editor.putString("name", "Tom");
                editor.putInt("age", 28);
                editor.putBoolean("married", false);
                editor.apply();
            }
        });
        Button button1 = findViewById(R.id.restore_data);
        button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                SharedPreferences preferences = getSharedPreferences("data", MODE_PRIVATE);
                //得到数据时getXXX()方法第一个参数时你自己定义的键值,第二个参数是你读取数据的默认值,假如你要读取的数据没有储存,那么就会赋值你输入的默认值。
                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","marrier is "+married);
            }
        });
    }
}

最简单的SharedPreferences存储就搞定了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值