0

我正在编写一个应用程序,每个活动和服务都使用我的 Sqlite 数据库。就目前而言,我实例化了 db(使用 db = new DBAdapter(this);)并在所有活动的 onCreate 方法中打开它,并在 onStop 方法中关闭它。这是正确的方法还是我应该以某种方式使数据库全局化?还是应该以捆绑的方式在活动之间传递?

我还希望更改我的 UI 以使用片段,这将意味着访问相同数据库的更多组件。当没有片段时,在每个活动中打开和关闭数据库似乎相对没问题,因为它们的进展是线性的。但是对于片段(我刚刚开始了解),在同一个屏幕上可能会有很多片段,所以如果他们每个人都有自己的数据库实例,我会担心它们会发生冲突。因此,对于在这些情况下应如何处理数据库的任何建议,我将不胜感激。

非常感谢您的帮助。

4

2 回答 2

0

如果您对使用框架而不是编写数据库访问代码感兴趣,那么请查看 Active Android ( http://www.activeandroid.com/ )。在我们的应用程序中,我们现在不必担心何时打开和关闭数据库,因为这个框架会负责这样做。

它使用 Application 对象的 onCreate 和 onTerminate 来初始化和取消初始化框架,在此期间它执行与打开和关闭数据库相关的操作。如果您出于某种原因不想使用该框架,则可以从中汲取灵感并遵循类似的模型

于 2013-07-01T15:50:42.103 回答
0

为什么不编写一个在处理所有数据库传输的所有活动之外的类?这样你就可以查询处理所有数据库访问的类。

您可以在应用程序和数据库之间放置一个抽象层,这样您的应用程序所需要的只是一个具有正确参数的函数调用(或多个调用)。

如果您决定要修补您的应用程序中的所有数据库访问方式,您只需更改一组代码,函数调用可能会基本保持不变。

就效率而言,只要您不从存储中提取大量数据,您如何让数据库保持打开状态可能并不重要。

但是为了它,为每个查询打开和关闭可能是值得的,如果他们的电池在数据库打开时没电了怎么办?

无论哪种方式,通过数据库和应用程序之间的抽象级别,您可以轻松更改访问数据库的方式。

于 2013-07-01T15:48:32.433 回答