数据存储与共享_第1页
数据存储与共享_第2页
数据存储与共享_第3页
数据存储与共享_第4页
数据存储与共享_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Google Android数据存储与共享数据存储与共享on android本章内容本章内容n首选项信息首选项信息私有数据存储私有数据存储公有数据存储与共享公有数据存储与共享n数据文件数据文件内存数据文件内存数据文件SD卡数据文件卡数据文件nSQLite数据库数据库SQLite基本操作基本操作SQLiteOpenHelpernContent Provider使用使用Content Provider发布数据发布数据使用使用Content Resolver获取数据获取数据数据存取方式数据存取方式n首选项信息首选项信息Preference键键-值值方式存储,以方式存储,以xml文件的形式保存文件的形

2、式保存n数据文件数据文件File采用采用java.io.*库所提供库所提供I/O接口读写文件接口读写文件n数据库数据库SQLite SQLite是轻量级的嵌入式数据库引擎是轻量级的嵌入式数据库引擎nContent Provider用于实现不同应用程序之间的数据共享用于实现不同应用程序之间的数据共享首选项信息首选项信息n什么是首选项?什么是首选项?可定制的设置选项或菜单可定制的设置选项或菜单程序的界面风格、操作习惯、常用列表等数据信息程序的界面风格、操作习惯、常用列表等数据信息首选项键值对形式存储首选项键值对形式存储SharedPreferences类类XML文件文件应用程序中可以通过指定不同的

3、应用程序中可以通过指定不同的XML文件名来创建多个文件名来创建多个首选项信息数据文件首选项信息数据文件首选项信息首选项信息n首选项信息的保护和公开模式首选项信息的保护和公开模式MODE_PRIVATE:私有模式:私有模式MODE_WORLD_READABLE:全局可读模式:全局可读模式MODE_WORLD_WRITEABLE:全局可写模式:全局可写模式首选项信息:私有数据存储首选项信息:私有数据存储nSharedPreferences获取获取public SharedPreferences getSharedPreferences(String name, int mode)public Sh

4、aredPreferences getSharedPreference() 例:例:SharedPreferences sp = getSharedPreferences(myShare, MODE_PRIVATE);首选项信息:私有数据存储首选项信息:私有数据存储nSharedPreferences提供的方法提供的方法boolean getBoolean(String key, boolean defValue)float getFloat(String key, float defValue)int getInt(String key, int defValue)long getLong(

5、String key, long defValue)String getString(String key, String defValue)首选项信息:私有数据存储首选项信息:私有数据存储nSharedPreferences.EditorSharedPreferences对象只提供读取数据的方法,不能对象只提供读取数据的方法,不能进行数据的存储和修改操作。这些操作需要通过进行数据的存储和修改操作。这些操作需要通过SharedPreferences类的嵌套类类的嵌套类SharedPreferences.Editor类所提供的方法来实现类所提供的方法来实现SharedPreferences.Ed

6、itor获取获取Editor editor = sp.edit();首选项信息:私有数据存储首选项信息:私有数据存储nSharedPreferences.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

7、key)首选项信息:公有数据存储与共享首选项信息:公有数据存储与共享n实现过程实现过程应用应用1创建首选项模式为创建首选项模式为:MODE_WORLD_READABLEMODE_WORLD_WRITEABLE应用应用2获取上下文环境获取上下文环境(共享首选项在包内共享首选项在包内)Context context = createPackageContext(com.example.sp, Context.CONTEXT_IGNORE_ SECURITY);SharedPreferences sp = context.getSharedPreferences(SPShare, MODE_WORL

8、D_READABLE);.首选项信息:实例首选项信息:实例n实例实例数据位于手机目录下:数据位于手机目录下:/data/data/shared_prefs数据文件数据文件n数据文件特点数据文件特点首选项信息只能以键值对的形式首选项信息只能以键值对的形式保存特定格式数据保存特定格式数据FileInputStreamFileOutputStreamopenFileInput()openFileOutput()数据文件数据文件nContext类提供方法类提供方法FileInputStream openFileInput(String name) throws FileNotFoundExceptio

9、n FileOutputStream openFileOutput(String name,int mode) throws FileNotFoundExceptionmode为文件操作模式,值为整数类型的常量:为文件操作模式,值为整数类型的常量:MODE_PRIVATE:默认输出模式:默认输出模式MODE_APPEND:追加模式:追加模式MODE_WORLD_READABLE:全局只读模式:全局只读模式MODE_WORLD_WRITEABLE:全局只写模式:全局只写模式MODE_WORLD_READABLE+MODE_WORLD_WRITEABLE:全局读写:全局读写模式模式 数据文件数据文

10、件nContext类提供方法类提供方法deleteFile():删除文件:删除文件getDir():创建:创建/获取一个文件目录获取一个文件目录fileList():列出本应用程序创建的所有文件:列出本应用程序创建的所有文件getFileDir():获取已创建文件的路径:获取已创建文件的路径数据文件:内存数据文件数据文件:内存数据文件n内存数据文件特点内存数据文件特点存放少量数据存放少量数据应用程序卸载时其内存中所关联的数据文件也被删除应用程序卸载时其内存中所关联的数据文件也被删除由程序创建的数据文件通常被保存在由程序创建的数据文件通常被保存在/data/data/files目录下目录下数据文

11、件:内存数据文件数据文件:内存数据文件n实例实例 数据文件:数据文件:SD卡数据文件卡数据文件nSD卡数据文件特点卡数据文件特点大量数据大量数据在程序中编写检查在程序中编写检查SD卡是否可用的程序卡是否可用的程序需申明对需申明对SD卡(外部存储空间)的使用权限卡(外部存储空间)的使用权限数据文件:数据文件:SD卡数据文件卡数据文件nSD卡数据文件常用操作卡数据文件常用操作判断判断SD是否存在是否存在 获得获得SD卡路径卡路径 例例Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)File sdCardD

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

13、节数据SQLite数据库数据库nSQLite基本操作方法基本操作方法public static SQLiteDatabaseopenOrCreateDatabase(String path,SQLiteDatabase.CursorFactory factory)打开打开/创建数据库,参数一为数据库文件路径,参数二可为创建数据库,参数一为数据库文件路径,参数二可为nullpublic void execSQL(String sql)public Cursor rawQuery(String sql, String selectionArgs)boolean moveToNext()/moveT

14、oPrevious()/moveToFirst()boolean isFirst()/isLast()int getCount()intgetXXX(intcolumnIndex)SQLite数据库数据库nSQLite基本操作实例基本操作实例数据库文件保存在目录数据库文件保存在目录/data/data/files/stu.db3SQLite数据库数据库nSQLiteOpenHelper提供方法辅助创建和打开数据库,管理数据库不同版本提供方法辅助创建和打开数据库,管理数据库不同版本使用时需要创建一个类,继承类使用时需要创建一个类,继承类SQLiteOpenHelper重写其相对应的方法来实现创建

15、、打开、更新数据库的重写其相对应的方法来实现创建、打开、更新数据库的操作操作常用方法如下常用方法如下void onCreate(SQLiteDatabase db)void onOpen(SQLiteDatabase db)void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)SQLiteDatabase getWritableDatabase()SQLiteDatabase getReadableDatabase()SQLite数据库数据库nSQLiteOpenHelperMVC思想思想使用分层思想设计数据模块使用分

16、层思想设计数据模块n例子例子Content Providern概念概念跨应用程序数据共享的方式跨应用程序数据共享的方式应用可通过应用可通过Content Provider发布数据,但不会泄发布数据,但不会泄露数据在其应用程序内部的组织和存储方式露数据在其应用程序内部的组织和存储方式其他应用可通过其他应用可通过Content Resolver来获取某个应用来获取某个应用发布出来的共享数据发布出来的共享数据通信录、通话记录、短信记录、相片库、铃声库等系统通信录、通话记录、短信记录、相片库、铃声库等系统应用程序也是通过应用程序也是通过Content Provider来共享自己的来共享自己的数据数据C

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

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

19、中的方法在在AndroidManifest.xml中注册这个自定义的中注册这个自定义的ContentProviderContent Providern自定义自定义ContentProvider需重写的主要方法需重写的主要方法boolean onCreate()Cursor query(Uriuri,Stringprojection,String selection, String selectionArgs, String sortOrder)int update(Uriuri,ContentValuesvalues, Stringselection,StringselectionArgs)U

20、ri insert(Uri uri, ContentValues values)int delete(Uri uri, String selection, String selectionArgs)String getType(Uri uri)Content Providern使用使用Content Resolver获取数据获取数据通过类通过类Content的的getContentResolver()方法可以方法可以获得一个类获得一个类ContentResolver的实例的实例类类ContentResolver的常用方法有:的常用方法有:Cursor query(Uri uri,String

21、projection,String selection,String selectionArgs, String sortOrder)int update(Uri uri, ContentValues values, String where, String selectionArgs)Uri insert(Uri url, ContentValues values)int delete(Uri url, String where, String selectionArgs)Content Providern在例在例SQLite1中创建类中创建类StuProvider(已建已建)只介绍向其他应

22、用程序提供查询的只介绍向其他应用程序提供查询的ContentProvider接口接口,其他可自行完成其他可自行完成public class StuProvider extends ContentProvider SQLiteDatabase db; . public boolean onCreate() try db = SQLiteDatabase.openOrCreateDatabase( this.getContext().getFilesDir().toString() + /stu.db3, null); catch(Exception e) return false; return true; public Cursor query(Uri uri, String projection, String selection

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论