持久化的五种方式
安卓有五种方式实现持久化,内部存储、网络存储、SharedPreferences、SQLite、外部存储(SD卡)。
SharedPreferences
是用键值对的形式来存储数据的,底层上采用XML文件来存储键值对,一般用来存少量简单类型的数据,比如几个字符串什么的。如果想要用SharedPreferences存储的话,先调用getSharedPreferences()获取一个SharedPreferences对象,然后调用该对象的edit(),再调用putString()来输入要保存的值,再commit()就结束存储了。
要读取的话就获得SharedPreferences对象后调用getString()来读取。
SharedPreferences不能在多进程的时候使用,因为虽然他是文件中的一种,而IPC又包括了文件共享这一形式,但是系统对于他的读写有一定的缓存机制,所以在面对高并发的场景的时候,他的读写就不可靠了,就会大概率丢失数据,所以最好不要用SharedPreferences。
SQLite数据库
SQLite是一种微型数据库,可以用来存储数据。安卓提供对SQLite的完全支持,应用程序内的所有类都可以通过名称访问任何数据库,但是应用程序之外的不能,要用contentprovider来共享数据。
SQLiteOpenHelper类来帮助我们实现数据库的创建和增删改查。
- 数据库的创建:OnCreate(),getReadableDatabase(),getWritableDatabase()这三个方法来创建数据库,第一次创建都会回调OnCreate方法。
- 数据库版本更新:OnUpgrade(),来实现版本号的更新。
- 增删改:这三个先调用getWritableDatabase()获取一个可写的数据库,然后可以用execSQL()来输入对应的sql语句来运行你的功能,或者使用提供的API(insert(),delete(),update()),如果用insert等功能需要很多参数的话,可以直接用execSQL(),输入查询的sql语句和参数集,就不会像insert()那样需要很多参数。
- 查:先调用getReadableDatabase()来得到一个可读的数据库,然后query()或者rawQuery()。
- 关闭数据库:完成对数据库的操作后要用close()来结束当前数据库的连接
- 删除数据库:deleteDatabase()可以删除指定的数据库。