在android里有五种常见的存储方式,分别是:SharedPreferences,SQLite,IO,ContentProvider,网络。
SharedPreferences:
有些时候,应用程序有少量的数据需要保存,而且这些数据的格式都很简单,像普通的字符串、标准类型的值等,如应用程序各种配置信息和实现本地登录时用户和密码,都可以用SharedPreferences进行存储。
SharedPreferences存储的格式是key-value对,而且它本身是一个接口,无法直接实例化,只能通过Context的getSharedPreferences(String name,int mode) 来进行实例化。参数列表的第一个值是自定义的名字,第二个参数可以取以下的值:Context.MODE_PRIVARE,只能被本应用读写;Context.MODE_WORLD_READABLE,能被其他应用读,但是不能写;Context.MODE_WORLD_WRITEABLE,可以被其他应用读写。
SharedPreferences本身没有写入的方法,只能通过调用edit()获取所对应的Editor对象。从用法上看很像Map集合,SharedPreferences为key来读取数据,SharedPreferences.Editor为value进行写数据。
SQLite:
是一种轻量级嵌入式的数据库,并不需要安装,只是一个文件,但是也允许开发者使用SQL语句进行操作,具体操作通过继承SQLiteDatabase来实现。
SQLite内部只支持NULL,INTEGER,REAL,TEXT,BLOB五种数据类型,但是也完全能接受varchar,char等类型的数据,只不过会把这种数据转成上面五种数据格式的一种,且允许把各种类型的数据保存到任何类型的字段中,除了INTEGER PRUMARY KEY,只能储存64位整数。
SQLiteOpenHelper:onCreate(),生成数据库;onUpgrade,更新数据库版本。
SQLiteDatabase:insert(),增加数据;update(),更改数据;delete(),删除数据;query(),查询数据;beginTransaction().开始事务;endTransaction(),结束事务。
使用事务可以使代码更加健壮,使用数据库的时候尽量使用事务。
IO:
即使用IO流来进行对手机内存和SD卡里的数据进行操作。Context提供了两个方法来打开应用程序的I/O流:FileInputStream openFileInput(String name):打开name文件对应的输入流;FileOutputStream openFileOutput(String name,int mode):打开name文件对应的输出流。
当想读写SD卡上的文件的时候,需要调用Environment的getExternalStrorageDirectory()来获取外部存储器,即SD卡的目录。
需要注意的是,当需要读写文件的时候,需要在androidManifast.xml里进行配置权限。
Content Provider:
解决进程之间数据共享的问题,把自己应用中的数据暴露给其他应用来进行数据间的共享,同时也是android四大组件之一,是重点同时也是难点。
需要用到URI, URI是统一资源标识符,代表了要操作的数据,其中URL是一种特殊的URI,来表示网络请求地址。‘
有两个工具类:
UriMatcher:用来匹配URI。
ContentUris:去拼接ID到Uri中,或截取Uri中的id的值。
还可以自定义ContentProvider,通过继承ContentProvider,实现里面的方法:onCreate(),delete(),insert(),queery(),update(),onType(),不要忘记在androidManifast.xml里边配置。
网络存储:
把用户的资料或者一些信息储存在网络上,方便的同时也是会带来各种困扰,如高额的流量费用和变相的暴露自己的隐私,但是这几年云储存的出现也让网络存储有了更大的发展空间。
通过HttpURLConnection对象,从网络中获取网页的信息。
14/7/16