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