跨应用程序使用绿道访问数据库



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

从我的主要活动 oncreate() 内部,对象和关系的设置和数据库访问似乎工作正常,因为我刚刚在那里设置了编码器来测试和调试。

我想编写一个处理所有数据库访问和操作的单例类,但由于它不是一个活动,所以它没有"上下文" 我知道将上下文作为参数传递是一个坏主意。 我需要找到一种方法来从上述所有内容访问数据库。

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

希望我能够清除我的问题。 感谢您的阅读和可能的回答。

泄漏上下文意味着您保留了对超出其正常生命周期的Context的引用 - 通常是已完成的Activity或已停止的Service。将Context作为方法参数传递并不意味着存在泄漏。仅当您在字段中保存对该Context的引用并将其保持在系统想要销毁它的点之外(因此您的引用可以防止它被垃圾回收)时,它才是一个泄漏。如果您保留对其他事物的引用,该引用保留对Context的引用,则也会发生同样的情况,其主要示例是View

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

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

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

相关内容

  • 没有找到相关文章

最新更新