wordpress全站固定链接,建设网站毕业设计,南京 公司网站制作,中山的网站建设公司Android中的5种数据存储方式 Android中的5种数据存储方式 数据存储在开发中是使用最频繁的#xff0c;在这里主要介绍Android平台中实现数据存储的5种方式#xff0c;分别是#xff1a; 1 使用SharedPreferences存储数据#xff1b; 2 文件存储数据#xff1b; 3 SQLit… Android中的5种数据存储方式 Android中的5种数据存储方式 数据存储在开发中是使用最频繁的在这里主要介绍Android平台中实现数据存储的5种方式分别是 1 使用SharedPreferences存储数据 2 文件存储数据 3 SQLite数据库存储数据 4 使用ContentProvider存储数据 5 网络存储数据 Android中数据存储的5种方法 简介这是Android中数据存储的5中方法的详细页面介绍了和手机软件,Android Android中数据存储的5中方法有关的知识 Android数据存储 Android提供了5种方式存储数据 --使用SharedPreferences存储数据 --文件存储数据 --SQLite数据库存储数据 --使用ContentProvider存储数据 --网络存储数据 先说 下PreferenceFile DataBase这三种方式分别对应的目录是/data/data/Package Name/Shared_Pref, /data/data/Package Name/files, /data/data/Package Name/database 。 在Android中通常使用File存储方式是用Context.openFileOutput(String fileName, int mode)和Context.openFileInput(String fileName)。 Context.openFileOutput(String fileName, int mode)生成的文件自动存储在/data/data/Package Name/files目录下其全路径是/data/data/Package Name/files/fileName 。注意下这里的参数fileName不可以包含路径分割符如/。 通常来说这种方式生成的文件只能在这个apk内访问。但这个结论是指使用Context.openFileInput(String fileName)的方式。使用这种方式每个apk只可以访问自己的/data/data/Package Name/files目录下的文件原因很简单参数fileName中不可以包含路径分割符Android会自动在/data/data /Package Name/files目录下寻找文件名为fileName的文件。 一使用SharedPreferences存储数据 首先说明SharedPreferences存储方式它是Android提供的用来存储一些简单配置信息的一种机制例如登录用户的用户名与密码。其采用了Map数据结构来存储数据以键值的方式存储可以简单的读取与写入具体实例如下 void ReadSharedPreferences(){ String strName,strPassword; SharedPreferences user getSharedPreferences(“user_info”,0); strName user.getString(“NAME”,””); strPassword user getString(“PASSWORD”,””); } void WriteSharedPreferences(String strName,String strPassword){ SharedPreferences user getSharedPreferences(“user_info”,0); uer.edit(); user.putString(“NAME”, strName); user.putString(“PASSWORD” ,strPassword); user.commit(); } 数据读取与写入的方法都非常简单只是在写入的时候有些区别先调用edit()使其处于编辑状态然后才能修改数据最后使用commit()提交修改 的数据。实际上SharedPreferences是采用了XML格式将数据存储到设备中在DDMS中的File Explorer中的/data/data/package name/shares_prefs下。以上面的数据存储结果为例打开后可以看到一个user_info.xml的文件打开后可以看到 ?xml version”1.0″ encoding”UTF-8″? map string name”NAME”moandroid/string string name” PASSWORD”SharedPreferences/string /map 使用SharedPreferences是有些限制的只能在同一个包内使用不能在不同的包之间使用。 二文件存储数据 文件存储方式是一种较常用的方法在Android中读取/写入文件的方法与 Java中实现I/O的程序是完全一样的提供了openFileInput()和openFileOutput()方法来读取设备上的文件。 FilterInputStream FilterOutputStream等可以到Java io package说明中去详细学习不再此详细说明具体实例如下: String fn “moandroid.log”; FileInputStream fis openFileInput(fn); FileOutputStream fos openFileOutput(fn,Context.MODE_PRIVATE); 除此之外Android还提供了其他函数来操作文件详细说明请阅读Android SDK。 三网络存储数据 网络存储方式需要与Android 网络数据包打交道关于Android 网络数据包的详细说明请阅读Android SDK引用了Java SDK的哪些package。 四ContentProvider 1、ContentProvider简介 当应用继承ContentProvider类并重写该类用于提供数据和存储数据的方法就可以向其他应用共享其数据。虽然使用其他方法也可以对外共享数 据但数据访问方式会因数据存储的方式而不同如采用文件方式对外共享数据需要进行文件操作读写数据采用sharedpreferences共享数 据需要使用sharedpreferences API读写数据。而使用ContentProvider共享数据的好处是统一了数据访问方式。? 2、Uri类简介 Uri代表了要操作的数据Uri主要包含了两部分信息1.需要操作的ContentProvider 2.对ContentProvider中的什么数据进行操作一个Uri由以下几部分组成 1.schemeContentProvider内容提供者的scheme已经由Android所规定为content://。 2.主机名或Authority用于唯一标识这个ContentProvider外部调用者可以根据这个标识来找到它。 3.路径path可以用来表示我们要操作的数据路径的构建应根据业务而定如下 ? 要操作contact表中id为10的记录可以构建这样的路径:/contact/10 ? 要操作contact表中id为10的记录的name字段 contact/10/name ? 要操作contact表中的所有记录可以构建这样的路径:/contact? 要操作的数据不一定来自数据库也可以是文件等他存储方式如下: 要操作xml文件中contact节点下的name节点可以构建这样的路径/contact/name 如果要把一个字符串转换成Uri可以使用Uri类中的parse()方法如下 Uri uri Uri.parse(content://com.changcheng.provider.contactprovider/contact) 3、UriMatcher、ContentUrist和ContentResolver简介 因为Uri代表了要操作的数据所以我们很经常需要解析Uri并从Uri中获取数据。Android系统提供了两个用于操作Uri的工具类分别为UriMatcher 和ContentUris 。掌握它们的使用会便于我们的开发工作。 ? UriMatcher用于匹配Uri它的用法如下 1.首先把你需要匹配Uri路径全部给注册上如下 //常量UriMatcher.NO_MATCH表示不匹配任何路径的返回码(-1)。 UriMatcher uriMatcher new UriMatcher(UriMatcher.NO_MATCH); //如果match()方法匹配content://com.changcheng.sqlite.provider.contactprovider/contact路径返回匹配码为1 uriMatcher.addURI(“com.changcheng.sqlite.provider.contactprovider”, “contact”, 1);//添加需要匹配uri如果匹配就会返回匹配码 //如果match()方法匹配 content://com.changcheng.sqlite.provider.contactprovider/contact/230路径返回匹配码为2 uriMatcher.addURI(“com.changcheng.sqlite.provider.contactprovider”, “contact/#”, 2);//#号为通配符 2.注册完需要匹配的Uri后就可以使用uriMatcher.match(uri)方法对输入的Uri进行匹配如果匹配就返回匹配码匹配码是调用 addURI()方法传入的第三个参数假设匹配 content://com.changcheng.sqlite.provider.contactprovider/contact路径返回的匹配 码为1。 ? ContentUris用于获取Uri路径后面的ID部分它有两个比较实用的方法 ? withAppendedId(uri, id)用于为路径加上ID部分 ? parseId(uri)方法用于从路径中获取ID部分 ? ContentResolver当外部应用需要对ContentProvider中的数据进行添加、删除、修改和查询操作时可以使用 ContentResolver 类来完成要获取ContentResolver 对象可以使用Activity提供的getContentResolver()方法。 ContentResolver使用insert、delete、update、query方法来操作数据。 五:总结说明 以上5中存储方式在以后的开发过程中根据设计目标、性能需求、空间需求等找到合 适的数据存储方式。Android 中的数据存储都是私有的其他应用程序都是无法访问的除非通过ContentResolver获取其他程序共享的数据。采用文件方式对外共享数据需要 进行文件操作读写数据采用sharedpreferences共享数据需要使用sharedpreferences API读写数据。而使用ContentProvider共享数据的好处是统一了数据访问方式。