什么时候closuresAndroid上的数据库连接? 每次操作完成后或您的应用程序退出后

我有一个Android应用程序,经常访问本地sqlite3数据库,性能的考虑,所以我总是保持连接打开。 但是我的一个朋友推荐我每一个操作打开/closures连接。

1)你们对这两种方法有什么看法? 利弊/利弊。 2)我做了一些testing,发现数据库连接没有太多的性能开销。 数据库连接的性能开销是否随着数据库的大小而变化?

我不知道在频繁closures/打开数据库(不pipe其大小)中是否存在任何性能损失。 我认为这个问题的答案也取决于访问数据库的应用程序types。

你是否“重新查询”数据库?
然后,似乎整顿,保持开放。

你每次抓取什么东西时都会抓取不同的数据?
同样,把它打开也是合理的(因为你不会获得caching数据)。

有没有其他的应用程序访问同一个数据库?
如果存在并发或阻塞问题的风险,那么在读取/写入数据库之后closures数据库可能是明智的。

通常我会说,在优化性能时,您可能会获得更多的caching数据,而不是打开数据库(反之,closures它)。

如果您正在使用内存数据库,则在closures连接时,数据将被丢弃。

也许是一个边缘的情况下,但它只是把我抓出来。

另外,如果从多个线程访问db,频繁地打开和closures连接可能会导致您经历臭名昭着的SQLiteexception。

如果你从一个连接访问多个线程的数据库,并且由于这些操作不是primefaces的,那么你可以尝试更新之前由另一个线程closures的数据库。

该文件说,只要你需要它,连接就可以打开。 并且可以在onDestroy()方法中closures。 文档链接

坚持数据库连接:

由于getWritableDatabase()和getReadableDatabase()在closures数据库时调用代价很高,因此只要可能需要访问数据库连接,就应该打开数据库连接。 通常,closures调用Activity的onDestroy()中的数据库是最佳select。

@Override protected void onDestroy() { mDbHelper.close(); super.onDestroy(); }