RoomDatabase重启断电数据丢失
Room 在SQLite上提供了一个抽象层,以便在充分利用SQLite的强大功能的同时,能够流畅地访问数据库。Android终端立即断电重启时,SQ写入磁盘会有延时,导致数据丢失。Linux/Unix系统中,在文件或数据处理过程中一般先放到内存缓冲区中,等到适当的时候再写入磁盘,以提高系统的运行效率。在插入/更新数据库后,获取数据库地址File句柄,刷新一下。public void DBSync(
·
Room 在SQLite上提供了一个抽象层,以便在充分利用SQLite的强大功能的同时,能够流畅地访问数据库。
Android终端立即断电重启时,SQ写入磁盘会有延时,导致数据丢失。
Linux/Unix系统中,在文件或数据处理过程中一般先放到内存缓冲区中,等到适当的时候再写入磁盘,以提高系统的运行效率。
在插入/更新数据库后,获取数据库地址File句柄,刷新一下。
public void DBSync() throws IOException { String path = mDataBase.getOpenHelper().getWritableDatabase().getPath(); FileOutputStream fos = null; try { fos = new FileOutputStream(path); fos.flush(); //将数据同步到达物理存储设备 FileDescriptor fd = fos.getFD(); fd.sync(); } catch(Exception e) { e.printStackTrace(); } finally { if(fos != null) fos.close(); } }
更多推荐
已为社区贡献1条内容
所有评论(0)