美文网首页
Android - base - 持久化技术

Android - base - 持久化技术

作者: no_today | 来源:发表于2017-10-14 21:53 被阅读0次

Android 中存储数据的三种方式中的前两种

大纲

  • 持久化技术简介
  • 方式一:文件存储
  • 方式二:SharedPreferences 配置文件存储

# 持久化技术简介

持久化技术是指将那些内存中瞬时存在的数据保存到存储设备 (文件,硬盘) 中,保证即使设备 (手机,电脑) 在关机的情况下,数据也不会丢失。
保存在内存中的数据是处于 瞬时 状态的,关闭程序 or 关机数据就销毁了。
而保存在存储设备中的数据是处于 持久化 状态的,不把硬盘砸烂数据就不会丢失。

Android 系统中提供了三种方式用于实现数据持久化功能,及 文件存储
SharedPreferences 存储以及 数据库存储

#方式一:文件存储

文件存储不对存储内容进行任何格式化处理,因而适合存储一些简单的文本数据或二进制数据。

##获取流对象

输出流
OpenFileOutput(String Filename, int mode):继承自 FileOutputStream
输入流
OpenFileInput(String fileName):继承自 FileInputStream

核心就是利用Context对象提供的两个方法获取到流,再利用Java的各种流来进行读写操作。

与Java IO操作几乎一致,Android 只要传入文件名即可,路径自动在 /data/data/<package name>/files/ 目录下。

##存取数据到文件
/**
  * MODE_APPEND 追加
  * MODE_PRIVATE 覆盖
  */
private void writeDate() {
    String data = "Hello Android";

    try (FileOutputStream output = openFileOutput(fileName, MODE_PRIVATE);
         BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(output))) {
        
        writer.write(data);
    } catch (Exception e) {
        e.printStackTrace();
    }


private void readDate() {
    String data = "";
    try (FileInputStream input = openFileInput(fileName);
         BufferedReader reader = new BufferedReader(new InputStreamReader(input))) {

        String data = reader.readLine();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

#方式二:SharedPreferences 配置文件存储

键值对存储:保存的时候需要提供键和值,取出的时候用键去取值。
SharedPreferences提供多种不同数据类型的存储方法。存取数据类型不变。

##获取 SharedPreferences 对象
  1. Context.getSharedPreferences(String name, int mode)
/**
  * @ param name 文件名
  * @ param mode 模式 MODE_PRIVATE (只有当前APP可以对该文件进行读写)
  */
public SharedPreferences getSharedPreferences(String name, int mode)
  1. Activity.getPreferences(int mode)
/**
  * @ param mode 模式 MODE_PRIVATE (只有当前APP可以对该文件进行读写)
  */
public SharedPreferences getPreferences(int mode)

跟Context的获取方式很相似,但文件名是系统根据当前 活动名 生成的。

  1. PreferenceManager.getDefaultSharedPrefernces(Context context)
/**
  * @ param context 上下文对象
  */
public static SharedPreferences getDefaultSharedPreferences(Context context)

静态方法,自动使用当前应用程序的 包名 作为文件名。

获取到了对象,下面该进行存取操作了。

##存取数据到 SharedPreferences 共享的参数

存储

  1. 调用 SharedPreferences 对象的 edit() 方法获取到 SharedPreferences.Editor 对象。
  2. 向 SheredPreferences.Editor 对象添加数据: putInt()putString()putBoolean() ...
  3. 调用 SheredPreferences.Editor 对象 apply() 方法将添加的数据提交存储。
// 存储数据
SharedPreferences sharedPreferences = getSharedPreferences(spName, MODE_PRIVATE);
SharedPreferences.Editor edit = sharedPreferences.edit();
edit.putString("userName", "Change");
edit.apply();
}

读取

  1. 调用 SheredPreferences 对象的方法读取数据: getInt()getString()
    getBoolean() ...
SharedPreferences sharedPreferences = getSharedPreferences(spName, MODE_PRIVATE);
String userName = sharedPreferences.getString("userName", "");

SharedPreferences 类的get...系列方法需要传入两个参数,第一个为键,第二个为键不存在后返回的默认值。


#总结

总结一下核心类

  1. 文件存储核心类

输出流
OpenFileOutput(String Filename, int mode)
输入流
OpenFileInput(String fileName)

  1. 配置文件存储核心类

获取数据
SharedPreferences
存储数据
SharedPreferences.Editor

相关文章

网友评论

      本文标题:Android - base - 持久化技术

      本文链接:https://www.haomeiwen.com/subject/tcytuxtx.html