1.Android中的持久化技术主要有三种:
  1)文件存储;
  2)SharedPreference存储;
  3)数据库存储(SQLite);
2.文件存储:
  1)Context 类中提供了一个 openFileOutput() 方法,可以用于将数据存储到指定的文件中。
    --openFileOutput() 方法的两个参数:
      ①文件名,不包括路径(路径默认为/data/data/<packagename>/files/);
      ②文件的操作模式,主要有两种:MODE_PRIVATE 和 MODE_APPEND,MODE_PRIVATE是默认的操作模式,表示操作文件时将覆盖文件内容,MODE_APPEND则是继续在文件中添加内容;
    --该方法的返回值为 FileOutputStream 对象,可使用 Java IO流来进行操作;
  2)Context 类还提供了一个openFileInput() 方法,该方法用于读取文件;
    --该方法只有一个参数,即文件名;
    --返回值为 FileInputStream 对象;
  3)文件存储的方式并不适合用于保存一些较为复杂的文本数据;
2.SharedPreference存储:
  1)SharedPreferences 是使用键值对的方式来存储数据的;
  2)Android中 使用 SharedPreferences 对象来存储数据,有三种方式获取SharedPreferences对象:
    ① Context 类中的 getSharedPreferences()方法:它有两个参数,第一个是文件名,若文件不存在,则自动创建,文件存储在/data/data/<packagename>/shared_prefs/目录下;第二个参数是指定操作模式,主要有两:MODE_PRIVATE 和 MODE_MULTI_PROCESS,MODE_PRIVATE是默认模式,表示只有当前应用可以对这个 SharedPreferences 文件进行读写;MODE_MULTI_PROCESS用于多个进程对一个SharedPreferences文件进行读写;
    ② Activity 类中的 getPreferences()方法:它只接收一个操作模式参数,因为使用这个方法时会自动将当前活动的类名作为 SharedPreferences 的文件名;
    ③ PreferenceManager 类中的 getDefaultSharedPreferences() 方法:这是一个静态方法,它接收一个Context 参数,并自动使用当前应用程序的包名作为前缀来命名SharedPreferences 文件。
  3)使用 SharedPreferences 对象来存储数据:
    ① 调用SharedPreferences 对象的edit()方法来获取一个SharedPreferences.Editor 对象。
    ② 向SharedPreferences.Editor 对象中添加数据,比如添加一个布尔型数据就使用 putBoolean 方法,添加一个字符串则使用putString()方法,以此类推。
    ③ 调用commit()方法将添加的数据提交,从而完成数据存储操作。
    ④ 读取数据时可以使用SharedPreferences 对象的 getXXX()方法读取,如 getString(),getInt()等,getXXX() 方法有两个参数,第一个为键名,第二个为默认值,当无法找到匹配键名的内容时使用该默认值;

3.SQLite数据库存储:

  1)SQLite 是一款轻量级的关系型数据库,它的运算速度非常快,占用资源少;

  2)Android 提供了一个 SQLiteOpenHelper 帮助类,借助这个类就可以非常简单地对数据库进行创建和升级;它是一个抽象类,使用时需自定义类来继承它,并重写onCreate() 方法和 onUpgrade() 方法;

  3)SQLiteOpenHelper 中提供了两个方法: getReadableDatabase() 和 getWritableDatabase()。这两个方法都可以创建或打开一个现有的数据库(如果数据库已存在则直接打开,否则创建一个新的数据库),并返回一个可对数据库进行读写操作的对象。不同的是,当数据库不可写入的时候(如磁盘空间已满)getReadableDatabase()方法返回的对象将以只读的方式去打开数据库,而getWritableDatabase()方法则将出现异常。

  4)CRUD操作:

    --insert(table, null, contentValues):插入数据;

    --update(table, contentValues, where, whereArgs):修改数据;

    --delete(table, where, whereArgs):删除数据;

    --query(table, columns, selection, selectionArgs, groupBy, having, orderBy):查询数据;

    --可以直接通过 sql 语句来操作数据库,其中增删改可以使用 SQLiteDatabase 的 execSQL(sql) 方法,查询可以使用 rawQuery(sql) 方法;

  5)事务的使用:

    --调用 SQLiteDatabase 的 beginTransaction() 方法来开启事务;

    --若所有操作都执行完毕,则调用 setTransactionSuccessful() 方法表示事务执行成功;

    --最后在finally 中调用 endTransaction() 方法结束事务;

  6)SQLite升级技巧:

    --在 onUpgrade() 方法中使用 switch(oldVersion) 判断旧版本是哪一个版本,然后执行响应的升级操作;

    --switch 的每一个 case 分支中都不使用 break语句,这样可以保证任何版本在升级时可以升级到最新的版本;

4.总结:文件适用于存储一些简单的文本数据或者二进制数据,SharedPreferences 适用于存储一些键值对,而数据库则适用于存储那些复杂的关系型数据;

Android--持久化技术的更多相关文章

  1. android持久化技术

    Android系统提供了3种持久化技术,所谓持久化技术是指将内存中的书籍保存在存储设备中. 1.文件存储 2.sharedPreference存储 3.数据库存储 除此之外,还可以将数据保存在SD卡中

  2. Android基础总结(5)——数据存储,持久化技术

    瞬时数据:指那些存储在内存当中,有可能会因为程序广播或其他原因导致内存被回收而丢失的数据. 数据持久化:指将那些内存中的瞬时数据保存到存储设备中,保证即使在手机或电脑关机的情况下,这些数据仍然不丢失. ...

  3. Android学习之基础知识九 — 数据存储(持久化技术)之SQLite数据库存储

    前面一讲介绍了数据持久化技术的前两种:文件存储.SharedPreferences存储.下面介绍第三种技术:SQLite数据库存储 一.SQLite数据库存储 SQLite数据库是一款轻量级的关系型数 ...

  4. Android学习之基础知识九—数据存储(持久化技术)

    数据持久化是将那些内存中的瞬时数据保存到存储设备,保证即使在手机或电脑关机的情况下,这些数据仍然不会丢失. Android系统中主要提供了3种方式用于简单地实现数据持久化功能:文件存储.SharedP ...

  5. Android:日常学习笔记(9)———探究持久化技术

    Android:日常学习笔记(9)———探究持久化技术 引入持久化技术 什么是持久化技术 持久化技术就是指将那些内存中的瞬时数据保存到存储设备中,保证即使在手机或电脑关机的情况下,这些数据仍然不会丢失 ...

  6. 《精通Hibernate:Java对象持久化技术详解》目录

    图书信息:孙卫琴 电子工业出版社 第1章 Java应用分层架构及软件模型: 1.1 应用程序的分层体系结构 1.1.1 区分物理层和逻辑层 1.1.2 软件层的特征 1.1.3 软件分层的优点 1.1 ...

  7. [转载] Android逃逸技术汇编

    本文转载自: http://blogs.360.cn/360mobile/2016/10/24/android_escape/ 摘    要 传统逃逸技术涉及网络攻防和病毒分析两大领域,网络攻防领域涉 ...

  8. NFC(13)使用Android Beam技术传输文件

    注意 Android Beam技术传输文件时nfc只负责连接两个手机,而传输文件实际是用蓝牙模块.且目前接收文件功能只是系统完成,不用自写个接收程序. 传输文件相关的重要api 从Android4.1 ...

  9. NFC(12)使用Android Beam技术传输文本数据及它是什么

    Android Beam技术是什么 Android Beam的基本理念就是两部(只能是1对1,不可像蓝牙那样1对多)NFC设备靠近时(一般是背靠背),通过触摸一部NFC设备的屏幕,将数据推向另外一部N ...

  10. Android官方技术文档翻译——Ant 任务

    本文译自Android官方技术文档<Ant Tasks>,原文地址:http://tools.android.com/tech-docs/ant-tasks. 由于是抽着时间译的.所以这篇 ...

随机推荐

  1. Visual Studio 中可执行文件中嵌入的清单文件

    概要 本分步指南介绍如何在 Microsoft Visual Studio 2005年中的可执行文件 (.exe) 文件中嵌入的清单文件.如果您要开发"认证 Windows Vista&qu ...

  2. Linux下的段错误(Segmentation fault)

    Linux开发中常见段错误问题原因分析 1 使用非法的内存地址(指针),包括使用未经初始化及已经释放的指针.不存在的地址.受系统保护的地址,只读的地址等,这一类也是最常见和最好解决的段错误问题,使用G ...

  3. “VS2013无法连接远程数据库”解决方案

    “VS2013无法连接远程数据库” 解决方案:以管理员身份登录CMD,输入netsh winsock reset并回车(注意,必须是已管理员身份运行,这个重置LSP连接) 或 netsh winsoc ...

  4. 简单的javascript--test2

    插件: jquery, sweetalert (http://t4t5.github.io/sweetalert/ ) 1.index.html <!DOCTYPE HTML> <h ...

  5. Linux Shell脚本入门--cut命令

    Linux Shell脚本入门--cut命令 cut cut 命令可以从一个文本文件或者文本流中提取文本列. cut语法 [root@www ~]# cut -d'分隔字符' -f fields &l ...

  6. 安装和部署ZkeaCMS

    ZkeaCMS是基于EasyFrameWork,使用ASP.NET MVC4开发的开源CMS. ZkeaCMS一个内容管理软件(网站).ZkeaCMS不仅只是管理内容,更是重新定义了布局.页面和组件, ...

  7. (八) 一起学 Unix 环境高级编程 (APUE) 之 信号

    . . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...

  8. .net批量插入SqlServer数据库的方法:

    using System;using System.Collections.Generic;using System.Configuration;using System.Data;using Sys ...

  9. Kindeditor为什么提交后获取不到值

    LinkButton不是表单提交方式所以获取不到.如果用button submit提交方式就是form提交方式后台就能获取到值 取得编辑器的HTML内容.KindEditor的可视化操作在新创建的if ...

  10. cmd.ExecuteReader(CommandBehavior.CloseConnection)

    有些开发人员坚持认为,如果您设置 CommandBehavior.CloseConnection 选项,则 DataReader 及其相关联的连接会在 DataReader 完成数据读取时自动关闭.这 ...