Android本地数据存储复习

Android无论是应用层还是系统层都需要在本地保存一些数据,尤其在应用层中使用的就更为普遍,大体有这么几种:SharedPreference,file,sqlite数据库。

SharedPreference

用于保存少量数据,如应用程序的各种配置信息。本质是一个Map对象,对应着key-value键值对。

SharedPreference本身是一个接口,在代码中使用getSharedPreference获取实例,该实例提供“读”的方法。而“写”的方法由SharedPreference.Editor方法提供。

SharedPreference数据以xml形式保存,保存在/data/data//shared-prefs目录下。

file

在通用的java对文件操作的io api的基础上,Android对文件的操作也有自己独特的API,如openFileOutput()和openFileInput(),分别用于获取对应文件的输出流和输入流。

打开的模式有以下四种:

  • MODE_PRIVATE
  • MODE_APPEND
  • MODE_WORLD_READABLE
  • MODE_WORLD_WRITEABLE

使用以上方法处理文件,文件的存储位置在/data/data//files目录下,但是一般情况下,手机的data分区的空间都十分稀缺,如果文件比较大,则建议存储在SD卡中。此时至少需要如下权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

需要注意的是,在Android4.4之后,手机的内置SD卡容量逐渐增大,Google在原始逻辑中不在提供次要SD卡的写权限,这也就导致目前越来越多的手机内置SD卡容量越来越大而不在提供外置SD卡的插卡槽。而早期的、尤其是需要在SD卡上读写文件的应用就需要在高版本上对该特性做出适配。

sqlite数据库

轻量级数据库,无需单独创建进程去执行数据库操作。应用层实际项目中会继承SQLiteOpenHelper类来打开或更新数据库,需复写两个方法onCreate()和onUpdate()方法。onCreate方法中主要生成数据库表结构和添加初始化数据,onUpdate方法中主要在软件或数据库版本升级的时候回使用。

很人性化的一点是,Android对sqlite数据库的API中提供两种方式操作数据库,一是直接使用SQL语句,使用execSQL方法;二是有特定的方法可以使用,如insert、delete等,其实在源码中这些方法最后也会把传入的参数组装成一个完整的SQL语句执行。

sqlite内部仅支持五种数据类型:

  • NULL
  • INTEGER
  • REAL(浮点数)
  • TEXT(文本)
  • BLOB(较大的二进制对象)

Android还提供一个工具可以使用命令行查看数据库,sqlite3。该工具可以在sdk中找到,也可以在adb shell中执行。但是有些手机出厂时没有带该工具,所以咱们可以自己在源码中编译出该工具,然后push到手机中使用。关于sqlite3可以通过.help的方式查看帮助。

Android本地数据存储复习的更多相关文章

  1. Android本地数据存储: ASimpleCache

    一:前言 在上一篇博客Android本地数据存储: Reservoir 博客中,我提到,除了Reservoir库,还可以采用ASimpleCache开源库,来实现本地数据存储.昨天并没有仔细的对比Re ...

  2. Android本地数据存储: Reservoir

    一:前言 今天做项目,准备使用本地存储,把一些数据存在本地磁盘上,比如用户名.密码这样的.其实大家都知道,这种情况最常用的就是SharedPreferences了,我也不例外,脑子里第一个想到的就是用 ...

  3. 理解 Android 本地数据存储 API

    利用首选项.SQLite 和内部及外部内存 API 对于需要跨应用程序执行期间或生命期而维护重要信息的应用程序来说,能够在移动设备上本地存储数据是一种非常关键的功能.作为一名开发人员,您经常需要存储诸 ...

  4. Android本地数据存储之SQLite关系型数据库 ——SQLiteDatabase

    数据库的创建,获取,执行sql语句: 框架搭建:dao 思考: 1.数据库保存在哪里? 2.如何创建数据库?如何创建表? 3.如何更新数据库?如何更改表的列数据? 4.如何获取数据库? 5.如何修改数 ...

  5. [安卓安全] 01.安卓本地数据存储:Shared Preferences安全风险浅析

    *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...

  6. Android之ListView,AsyncTask,GridView,CardView,本地数据存储,SQLite数据库

    版权声明:未经博主允许不得转载 补充 补充上一节,使用ListView是用来显示列表项的,使用ListView需要两个xml文件,一个是列表布局,一个是单个列表项的布局.如我们要在要显示系统所有app ...

  7. android学习笔记45——android的数据存储和IO

    android的数据存储和IO SharedPreferences与Editor简介 SharedPreferences保存的数据主要是类似于配置信息格式的数据,因此其保存的数据主要是简单的类型的ke ...

  8. Android实现数据存储技术

    转载:Android实现数据存储技术 本文介绍Android中的5种数据存储方式. 数据存储在开发中是使用最频繁的,在这里主要介绍Android平台中实现数据存储的5种方式,分别是: 1 使用Shar ...

  9. Android中数据存储(一)

    国庆没有给国家添堵,没有勾搭妹子,乖乖的写着自己的博客..... 本文将为大家介绍Android中数据存储的五种方式,数据存储可是非常重要的知识哦. 一,文件存储数据 ①在ROM存储数据 关于在ROM ...

随机推荐

  1. JQuery 概况

  2. activemq jmsTemplate 发送消息速度太慢

    http://activemq.apache.org/async-sends.html http://bbs.csdn.net/topics/370062485

  3. PPTP-VPN第一章——部署与简单使用

    最近前游戏同事搞了台的VPS,贡献出来做VPN使用.目前流行的服务器VPN软件主要有PPTP VPN和Openvpn.Openvpn虽然功能较为强大,且安全性高,支持nat穿越等等,但服务器端和客户端 ...

  4. 常见绘图框架-(Charts)

    swift 出来后有很多优秀的第三方绘图.动画框架,最近项目需要使用了 Charts Github: https://github.com/danielgindi/Charts 因为是在Object- ...

  5. wcf用svcutil导出泛型的元数据

    D:\aaa>svcutil net.tcp://192.168.1.110:44444/TradingsService.svc/mex /ct:System.Collections.Gener ...

  6. iOS中几种常用的数据存储方式

    自己稍微总结了一下下,方便大家查看 1.write直接写入文件的方法 永久保存在磁盘中,可以存储的对象有NSString.NSArray.NSDictionary.NSData.NSNumber,数据 ...

  7. UNICODE 7.0定义的表情符

    td.graph { font-size:24px; } UNICODE 7.0定义了78个表情符,从0x1F600到0x1F64F(其中0x1F643和0x1F644没有定义).下表中列出了这些表情 ...

  8. ubuntu远程桌面连接windows系统(转)

    现在用ubuntu系统,公司买了个windows的服务器,需要给配置一套环境,来回跑很麻烦,就想windows下可以的远程桌面,linux应该也有. 现在自己的ubuntu13.10,无法进入桌面的& ...

  9. 1_UILabel

    // // ViewController.swift // 1_UILabel // // Created by Larry on 2016/12/7. // Copyright © 2016年 nf ...

  10. python打印服务器所有进程

    #有时候我们需要查看服务器上所有进程,来判断哪些进程是否已经称为僵尸进程#!/usr/local/bin/python3.5 import psutil for i in psutil.pids(): ...