乐趣区

关于android:Android入门教程-SharedPreferences-简介

有时候咱们想在利用中存储一些数据。比方一些配置信息。例如存储 int,float,boolean,字符串这类的数据。

写文件可能会比拟繁琐。须要本人实现文件读写操作,定义数据寄存构造。对于这些简略的数据,咱们能够用 SharedPreferences(下文或简称 sp)来进行存储。

sp 应用的是 key-value 类型的数据结构。之前接触到的 json 格局也是 key-value 类型的。

存数据

第一步是获取到一个 SharedPreferences 对象。在 Activity 中,能够调用 getSharedPreferences(String name, int mode) 办法。须要传入这个 sp 的名字。

private static final String SP_1 = "sp_1";

getSharedPreferences(SP_1, Context.MODE_PRIVATE)

存入各项数据。int 有对应的 putInt 办法。同理,boolean、float、long、String、StringSet 都有对应的 put 办法。也简写为 putXxx 办法。

private void saveParams() {Set<String> set = new HashSet<>();
    set.add("R");
    set.add("u");
    set.add("s");
    set.add("t");
    getSharedPreferences(SP_1, Context.MODE_PRIVATE).edit()
            .putInt(K_1, 1000)
            .putBoolean(K_2, true)
            .putFloat(K_3, 3.14159f)
            .putLong(K_4, System.currentTimeMillis())
            .putString(K_5, "RustFisher")
            .putStringSet(K_6, set)
            .apply();}

最初调用 apply() 办法,把数据写入。留神 apply() 办法,它并不保障立即把数据写入。它是一个异步的办法。

commit() 是一个同步办法。它会在以后线程立即执行。

官网举荐应用 apply() 来保存信息。

运行到机器上。如果数据保留胜利,在 as 的 Device File Explorer 面板中,咱们能够找到文件/data/data/com.rustfisher.tutorial2020/shared_prefs/sp_1.xml

应用 sp,会在利用外部的 shared_prefs 目录创立 xml 文件。

运行示例工程,咱们能够看到 shared_prefs 目录有别的库创立的 sp 文件。例如 BuglySdkInfos.xmlx5_proxy_setting.xml等等。

<pre id="__code_2" style="box-sizing: inherit; color: var(--md-code-fg-color); font-feature-settings: &quot;kern&quot;; font-family: &quot;Roboto Mono&quot;, SFMono-Regular, Consolas, Menlo, monospace; direction: ltr; position: relative; margin: 1em 0px; line-height: 1.4;">`<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
    <int name="k1" value="1000" />
    <boolean name="k2" value="true" />
    <float name="k3" value="3.14159" />
    <long name="k4" value="1605628186953" />
    <string name="k5">RustFisher</string>
    <set name="k6">
        <string>R</string>
        <string>s</string>
        <string>t</string>
        <string>u</string>
    </set>
</map>

可看出它存储应用的是 xml 文件,外围标签是<map>

读数据

存入数据后,咱们能够把数据读出来。和 putXxx 办法相似,sp 提供了 getXxx 办法。

例如 int getInt(String key, int defValue); 办法。前面的 defValue 是默认值。如果这个 key 没有对应的 int,则返回默认值 defValue。

  • getInt
  • getBoolean
  • getFloat
  • getLong
  • getString
  • getStringSet

上面代码是把数据读出,并且显示进去。

private void readParams() {SharedPreferences sp = getSharedPreferences(SP_1, Context.MODE_PRIVATE);
    StringBuilder sb = new StringBuilder();
    sb.append(K_1).append(":").append(sp.getInt(K_1, -1));
    sb.append("\n").append(K_2).append(":").append(sp.getBoolean(K_2, false));
    sb.append("\n").append(K_3).append(":").append(sp.getFloat(K_3, -1));
    sb.append("\n").append(K_4).append(":").append(sp.getLong(K_4, -1));
    sb.append("\n").append(K_5).append(":").append(sp.getString(K_5, "none"));
    sb.append("\n").append(K_6).append(":").append(sp.getStringSet(K_6, null));
    mTv1.setText(sb.toString());
}

Android 零根底入门教程视频参考

退出移动版