我在一次采访中被问到如何为我们的 android 应用程序设置 sqlite db 的最大大小。当达到最大尺寸时我们如何处理?
编辑:Marina Lynn 在下面的回答似乎可以接受这个问题。但是当数据库大小接近我们指定的限制时,是否会触发某种侦听器?(或类似的东西)
我在一次采访中被问到如何为我们的 android 应用程序设置 sqlite db 的最大大小。当达到最大尺寸时我们如何处理?
编辑:Marina Lynn 在下面的回答似乎可以接受这个问题。但是当数据库大小接近我们指定的限制时,是否会触发某种侦听器?(或类似的东西)
首先,设置.setMaximumSize()
上一个答案中提到的最大数据库大小使用。
SQLiteFullException
其次,如果数据库文件增长大于最大页数 * 页面大小,Android 会抛出异常。SQLiteFullException
是一个RuntimeException
。如果您想处理它并发送相关响应,您将执行以下操作:
try {
getContentResolver().update(myEntity.CONTENT_URI, values, where, null);
} catch (SQLiteFullException e) {
Log.w(TAG, "Exception when updating ...", e);
}
尽管除了可用存储之外,数据库的大小没有限制,但您可以将数据库的最大大小设置为SQLiteDatabase.setMaximumSize()
. 如果达到限制,则必须缩小数据库。或者,您可以将数据库从内部存储器移动到外部存储,可能有更多可用空间并增加数据库最大大小。但是繁重的数据库会导致糟糕的用户体验,因此第二个选择是理论上的。请记住,我们是在移动环境中,而不是在专用的数据库服务器中。
请考虑到它SQLiteFullException
不仅会在您的数据库达到其自身限制时抛出,而且在文件存储中没有可用空间的情况下也会抛出。如果要处理 SQLiteFull 异常,还需要检查设备上的可用空间。如果设备上的空间不足,您需要告诉用户从未使用的数据中清除设备。