数据存储与共享

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Content Provider

uri是Content Provider提供的访问数据的标签
– A:标准前缀,用来说明这是一个Content Provider
控制的数据 – B:URI的标识,该标识定义了这是哪个Content Provider提供的数据 – C:路径,URI中可能不包括路径,也可能包括一个或 多个 – D:需要获取的记录的ID;如果没有该ID,就表示返回 全部数据
模式
数据文件

Context类提供方法
– deleteFile():删除文件
– getDir():创建/获取一个文件目录 – fileList():列出本应用程序创建的所有文件
– getFileDir():获取已创建文件的路径
数据文件:内存数据文件

内存数据文件特点
– 存放少量数据
– 应用程序卸载时其内存中所关联的数据文件也被删除 – 由程序创建的数据文件通常被保存在
Content Provider

使用Content Provider发布数据
– Content Provider提供的数据以类似于数据库表的
二维结构来组织。每一行表示一条记录,每一行包含若 干列。通过调用类ContentProvider提供的方法,其 他应用程序可以对提供的数据进行查询、更新、插入、 删除等操作 – 从类ContentProvider派生出一个子类,即自定义一 个ContentProvider,并根据需要重写其中的方法 – 在AndroidManifest.xml中注册这个自定义的 ContentProvider
数据文件:SD卡数据文件

SD卡数据文件常用操作
– 判断SD是否存在
Environment.getExternalStorageState().equals(Environment. MEDIA_MOUNTED)
– 获得SD卡路径
File sdCardDir = Environment.getExternalStorageDirectory();
首选项信息:实例

实例
数据位于手机目录下: "/data/data/<package_name>/shared_prefs"
数据文件

数据文件特点
– 首选项信息只能以键值对的形式
– 保存特定格式数据 – FileInputStream
– FileOutputStream
– openFileInput() – openFileOutput()
首选项信息:私有数据存储

SharedPreferences.Editor
SharedPreferences对象只提供读取数据的方法,不能 进行数据的存储和修改操作。这些操作需要通过 SharedPreferences类的嵌套类 SharedPreferences.Editor类所提供的方法来实现 – SharedPreferences.Editor获取 Editor editor = sp.edit();
mode为文件操作模式,值为整数类型的常量:
– MODE_PRIVATE:默认输出模式 – MODE_APPEND:追加模式 – MODE_WORLD_READABLE:全局只读模式 – MODE_WORLD_WRITEABLE:全局只写模式 – MODE_WORLD_READABLE+MODE_WORLD_WRITEABLE:全局读写
首选项信息:私有数据存储

SharedPreferences提供的方法
– boolean getBoolean(String key, boolean
– – – –
defValue) float getFloat(String key, float defValue) int getInt(String key, int defValue) long getLong(String key, long defValue) String getString(String key, String defValue)
ContentResolver
露数据在其应用程序内部的组织和存储方式 – 其他应用可通过Content Resolver ContentProvider 来获取某个应用 ContentProvider 发布出来的共享数据
– 通信录、通话记录、短信记录、相片库、铃声库等系统
应用程序也是通过Content Provider来共享自己的 数据
数据文件

Context类提供方法
– FileInputStream openFileInput(String name)
throws FileNotFoundException – FileOutputStream openFileOutput(String name,int mode) throws FileNotFoundException
– MODE_WORLD_READABLE:全局可读模式 – MODE_WORLD_WRITEABLE:全局可写模式
首选项信息:私有数据存储

SharedPreferences获取
– public SharedPreferences
getSharedPreferences(String name, int mode) – public SharedPreferences getSharedPreference() 例: SharedPreferences sp = getSharedPreferences("myShare", MODE_PRIVATE);
首选项信息:私有数据存储

SharedPreferences.Editor提供的方法
– putBoolean(String key, boolean value) – putFloat(String key, float value) – putInt(String key, int value) – putLong(String key, long value) – putString(String key, String value) – remove(String key) – commit() – contains(String key)

什么是首选项?
– 可定制的设置选项或菜单
– 程序的界面风格、操作习惯、常用列表等数据信息 – 首选项键值对形式存储
– SharedPreferences类
– XML文件 – 应用程序中可以通过指定不同的XML文件名来创建多个
首选项信息数据文件
首选项信息

首选项信息的保护和公开模式
– MODE_PRIVATE:私有模式
数据存取方式

首选项信息Preference
– "键-值"方式存储,以xml文件的形式保存

数据文件File
– 采用java.io.*库所提供I/O接口读写文件

数据库SQLite
– SQLite是轻量级的嵌入式数据库引擎

Content Provider
– 用于实现不同应用程序之间的数据共享
首选项信息
首选项信息:公有数据存储与共享

实现过程
– 应用1创建首选项模式为: MODE_WORLD_READABLE MODE_WORLD_WRITEABLE – 应用2获取上下文环境(共享首选项在包内) Context context = createPackageContext("com.example.sp", Context.CONTEXT_IGNORE_ SECURITY); SharedPreferences sp = context.getSharedPreferences("SPShare", MODE_WORLD_READABLE); ......
– 例
SQLite数据库

SQLite概述
– SQLite是一种轻量级的基于文件的数据库管理系统
– 由C语言编写,实现了标准SQL中的CRUD操作 – SQLite小巧、高效,适用于手机等嵌入式设备中
– SQLite内部支持以下几种数据类型:
NULL:空值 INTEGER:有符号整数 REAL:浮点数 TEXT:文本字符串 BLOB:二进制字节数据
– boolean moveToNext()/moveToPrevious()/moveToFirst()
– boolean isFirst()/isLast()
– int getCount() – intgetXXX(intcolumnIndex)
SQLite数据库

SQLite基本操作实例
– 数据库文件保存在目录 "/data/data/<package_ name>/files/stu.db3"
Content Provider

自定义ContentProvider需重写的主要方法
– boolean onCreate()
– Cursor query(Uriuri,String[]projection,String

– – –
selection, String[] selectionArgs, String sortOrder) int update(Uriuri,ContentValuesvalues, Stringselection,String[]selectionArgs) Uri insert(Uri uri, ContentValues values) int delete(Uri uri, String selection, String[] selectionArgs) String getType(Uri uri)
"/data/data/<package_ nameห้องสมุดไป่ตู้/files"目录下
数据文件:内存数据文件

实例
数据文件:SD卡数据文件

SD卡数据文件特点
– 大量数据
– 在程序中编写检查SD卡是否可用的程序 – 需申明对SD卡(外部存储空间)的使用权限
<uses-permission android:name = "android.permission.MOUNT_UNMOUNT_FILE SYSTEMS"/> <uses-permission android:name = "android.permission.WRITE_EXTERNAL_STORA GE"/>
Google Android
数据存储与共享
on android
本章内容

首选项信息
– 私有数据存储 – 公有数据存储与共享

数据文件
– 内存数据文件 – SD卡数据文件

SQLite数据库
– SQLite基本操作 – SQLiteOpenHelper

Content Provider
– 使用Content Provider发布数据 – 使用Content Resolver获取数据
SQLite数据库

SQLiteOpenHelper
– MVC思想
– 使用分层思想设计数据模块

例子
Content Provider

概念
– 跨应用程序数据共享的方式
app
app
app
– 应用可通过Content Provider发布数据,但不会泄
ContentResolver
ContentResolver
SQLite数据库

SQLite基本操作方法
– public static
SQLiteDatabaseopenOrCreateDatabase(String path,SQLiteDatabase.CursorFactory factory) 打开/创建数据库,参数一为数据库文件路径,参数二可为null – public void execSQL(String sql) – public Cursor rawQuery(String sql, String[] selectionArgs)
SQLite数据库

SQLiteOpenHelper
– 提供方法辅助创建和打开数据库,管理数据库不同版本
– 使用时需要创建一个类,继承类SQLiteOpenHelper – 重写其相对应的方法来实现创建、打开、更新数据库的
操作 – 常用方法如下
void onCreate(SQLiteDatabase db) void onOpen(SQLiteDatabase db) void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) SQLiteDatabase getWritableDatabase() SQLiteDatabase getReadableDatabase()
相关文档
最新文档