Android持久化技术(一)

本文介绍了Android应用中数据持久化的三种方法:文件存储、SharedPreferences和SQLite数据库存储,详细讲解了它们的使用、操作和示例代码。

文章均摘自《Android第一行代码》(第二版)

介绍

一、持久化技术
        数据持久化就是指将那些内存中的瞬时数据保存到存储设备中,持久化技术提供了一种机制可以让数据在瞬时状态和持久状态之间进行转换。
        Android系统主要提供了三种方式用于简单地实现数据持久化功能,即文件存储,SharedPreference存储以及数据库存储。

二、文件存储
        文件存储时Android中最基本的一种数据存储方式,它不对存储的内容进行任何格式化的处理,所有数据原封不动的保存到文件之中。因而它适合存储一些较为简单的文本数据或二进制数据。

(1)存储数据到文件
        Context类中提供了一个openFileOutput()方法,可用于将数据存储到只当文件中去,这个方法接收两个参数。第一个参数是文件名,在文件创建时使用改名称,这里文件名不包含路径。因为所有的文件默认存储到data/data/”package name”/files目录下;第二个参数是文件的操作模式,主要有两种模式可以选择:

        1.MODE_PRIVATE 默认操作模式,表示指定同样文件名时,所写入的内容将会覆盖原文件中的内容
       2. MODE_APPEND 表示如果文件已存在,就往文件里追加内容,不存在就创建新文件。

        openFileOutput()方法返回一个FileOutputStream对象,如此可以使用Java的IO流操作文件了。

(2)从文件读取数据
        Context类还提供了一个openFileInput()方法,用于从文件中读取数据。该方法只接收一个参数,即要读取的文件名。系统会自动到data/data/”package name”/files/目录下加载这个文件,并返回一个FileInputStream对象,得到了这个对象之后再通过IO流的方式讲数据读取出来。

三、SharedPreferences存储
        SharedPreferences使用键值对的方式来存储数据,而且支持多种不同的数据类型的存储。

(1)将数据存储到SharedPreferences中
        要想使用SharedPreferences存储数据,首先需要获取到SharedPreferences对象。Android中提供了三种方式用于得到SharedPreferences对象。

        Context类中的getSharedPreferences()方法
        此方法接收两个参数,第一个参数用于指定SharedPreferences文件的名称,如果指定的文件不存在会创建一个,SharedPreferences文件都是存放在/data/data/”package name”/shared_prefs/目录下的。第二个参数用于指定操作模式,MODE_PRIVATE表示只有当前应用程序才可以队这个SharedPreferences文件进行读写。

        1.Activity类中的getPreferences()方法
这个方法跟上面的方法类似,不过它只接收一个操作模式参数。使用这个方法时,会自动将当前活动的类名作为SharedPreferences的文件名。

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

        3.调用SharedPreferences对象的edit()方法来获取一个SharedPreferences.Editor对象。
        向SharedPreferences.Editor对象中添加数据,比如添加一个布尔型数据就使用putBoolean()方法,添加一个字符串使用putString()方法,以此类推。调用apply()方法将添加的数据提交,从而完成数据存储操作。
(2)从SharedPreferences中读取数据
SharedPreferences对象中提供了一系列的get方法,用于队存储的数据进行读取,每种get方法都对应了SharedPreferences.Editor中的一种put方法。如getBoolean()、getString()。这些get方法接收两个参数,第一个参数是键,传入存储数据时用使用的键就可以得到相应的值了,第二个参数时默认值,即表示传入的键找不到对应的值会以什么样的默认值进行返回。

public void save(String inputText) throws IOException {//在文件中存储信息
        FileOutputStream out = null;
        BufferedWriter writer = null;
        try {
            out = openFileOutput("date", Context.MODE_PRIVATE);
            writer = new BufferedWriter(new OutputStreamWriter(out));
            writer.write(inputText);
        } catch (IOException e) {
            throw new RuntimeException(e);
        } finally {
            try {
                if (writer != null){
             
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值