永远不要关闭Android SQLite连接

Kev*_*gan 19 android

如果您只是从不关闭连接会发生什么?我知道如果你不关闭它并尝试打开另一个,你会得到例外,但是如果你有一个全局单例,你只是不关闭它会发生什么?任何的想法?

Com*_*are 27

在时空连续体中形成了一个裂缝,威胁着宇宙中所有生命的灭绝,直到有一群人穿着色彩鲜艳的滑稽服装(包括一些斗篷,如果你能相信的话)来拯救这一天..

哦,不,等等.那只是一本漫画书.


实际上,没有什么事情发生.Google员工和其他Android专家告诉我,由于SQLite的工作方式(特别是处理事务),如果您无法关闭数据库,就不会发生任何不好的事情.

事实上,如果您实现内容提供程序,您将具有相同的效果,因为不使用任何类型的onDestroy()方法调用内容提供程序,这意味着您将永远不会有机会关闭数据库.内容提供商将一直存在,直到该过程终止.就个人而言,这真的让我感到困惑,这是我尝试最小化内容提供商使用的原因之一.

  • 内容提供商是Android中最不了解和最常用的部分之一.它们被大量推送到文档中,或者至少是早期的文档,但只有在您计划与第三方应用程序共享数据时才应该使用它们.我见过人们只是用来序列化数据库访问,这很糟糕.无论如何,我认为有一个静态连接会很好.我做了很多工作来测试多个连接会发生什么.总结,它的不好:http://www.touchlab.co/blog/android-sqlite-locking/.为ORMLite进行连接管理的重复.谢谢. (4认同)
  • 这是一篇很棒的博客文章,顺便说一句。 (2认同)
  • @John也在这里......我认为它们是相同的但是http://touchlabblog.tumblr.com/post/24474398246/android-sqlite-locking (2认同)
  • @dimsuz:“如果我有一个始终打开的连接,它会不会以某种方式消耗内存?” - 不多。“或者是仅由游标消耗的内存并在我关闭它们时释放” - 一般来说,是的。 (2认同)