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();
}
}更多推荐



所有评论(0)