繁体   English   中英

在整个应用程序中使用greendao访问数据库

[英]accessing db using greendao across application

我已经开始学习和使用greendao ORM,并且遇到了这个问题。 我正在编写一个备忘录/警报应用程序,这意味着我需要从各种活动以及服务和接收者访问数据库。 例如:在一个屏幕上,我正在设置警报的值。 在服务和接收器上,我正在读取这些值并采取相应的措施。

在我的主要活动oncreate()中,设置和使用对象及关系的DB访问似乎运行良好,因为我刚刚在那里设置了编码器以进行测试和调试。

我考虑编写一个处理所有数据库访问和操作的单例类,但是由于它不是活动,因此没有“上下文”,我知道将上下文作为参数传递是一个坏主意。 我需要找到一种从上述所有数据库进行数据库访问的方法。

另外,我在某处读到我不应该在主要活动中初始化数据库。 有人可以详细说明一下并解释初始化的概念以及主要活动的问题吗?

希望我能够解决我的问题。 感谢您阅读和回答。

泄漏的上下文意味着你已经把一个参照Context超出其正常的生命周期-通常是一个Activity已完成或Service已停止。 Context作为方法参数传递并不意味着存在泄漏。 如果您在字段中保存对该Context的引用,并将其保留在系统想要销毁它的范围之外(因此,您的引用可以防止对其进行垃圾收集),则只会泄漏。 如果您保留对其他内容的引用而保留对Context的引用,则可能会发生同样的情况,其中主要的示例是View

应用程序Context生存时间与您的应用程序进程一样长,并且始终是单例。 持有它不是泄漏。 这意味着您可以在单例数据库助手类中使用它,而不必担心它会泄漏。 您的单例实际上可以接受任何Context因为您可以简单地对其调用.getApplicationContext()以获得此应用程序上下文实例。

子类化Application是可选的。 在我看来,这样做的好处是可以使用应用程序的onCreate()方法进行一次性安装,因为这是您运行应用程序代码的第一个机会。

这是一篇有关Context的好文章,可能会有用: https : //possiblemobile.com/2013/06/context/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM