Android类SQLiteOpenHelper有一个返回可读数据库以及可读写数据库的方法。目前我只使用可写数据库并且没有问题,但我想知道如果我只是在异步任务(或活动)中读取,那么改为使用可读性会带来什么好处。
可能会有性能优势,但我没有看到任何实际数字的参考。此外,如果我继续在可读和可写之间切换,那么更改的开销可能会带来所有性能优势。
有人有任何实际数字或经验吗?是否值得实施单独访问?
答案 0 :(得分:6)
好问题。没有数字来自我。最近的解释(来自SQLLiteOpenHandler javadoc)
“此(getReadableDatabase)将是getWritableDatabase()返回的同一对象,除非某些问题(例如完整磁盘)要求以只读方式打开数据库。在这种情况下,只读数据库对象将是如果问题得到解决,将来可能会调用getWritableDatabase(),在这种情况下,将关闭只读数据库对象,并在将来返回读/写对象。“
答案 1 :(得分:5)
我无法对性能优势发表评论,但我总是尝试着对“良好实践”(或“最佳实践”)的原则,以便访问任何“数据”来源(文本文件,数据库或其他)
一般地看待事物(不是特定于Android),在决定访问级别时要做出的决定,归结为要执行的操作以及任何外部影响。
我能想到的两个例子......
好的,这些点可能与Android有关,也可能没有(特别是如果您的数据源特定于您的应用),但正如我所说,我试图一般地看待事物并使用“最佳实践”方法。如果我不需要“写入”访问权限,我不会要求它。