3

按照建议,我使用单例来获取帮助程序(我确保它首先使用应用程序上下文在我的应用程序的 onCreate() 上创建)。

然后从不同的 [Intent]Services 使用这个帮助器,但我对发布感到困惑:我已经阅读了这个相关的问题,但是 ormlite 的文档releaseHelper()似乎是矛盾的:

警告:当您的应用程序或服务终止或您的代码不再以任何方式使用帮助程序或派生 DAO 时,应在 onDestroy() 类型的方法中调用此方法。如果您希望在应用程序终止之前再次调用 {@link #getHelper(Context)},请不要调用此方法。

上面警告的第二部分是告诉不要调用 releaseHelper() 如果我们希望在应用程序终止之前再次调用 getHelper(),如果在应用程序的进程终止之前启动另一个服务,这很可能是这种情况!

此外,根据这篇文章,不释放助手在 Android 上听起来很安全。

我是不是误会了?

4

2 回答 2

2

我必须同意这种混乱。

http://ormlite.com/javadoc/ormlite-core/doc-files/ormlite_4.html#Use-With-Android状态在每个 Activity/Fragment 的 onDestroy() 上调用 OpenHelperManager.releaseHelper(),但对 releaseHelper 的警告注释() 清楚地告诉您仅在应用程序终止时使用它。

也许 releaseHelper() 评论中的警告不再相关?而且Kevin Galligan的警告帖也因为他离开项目后的变化而不再相关?

于 2015-10-06T13:54:04.063 回答
1

我是不是误会了?

不知道你是否理解。

一旦数据库被关闭,当DatabaseHelper你的应用程序的最后一部分释放数据库时,它就不能被重新打开。警告只是为了确保如果某些后台任务与数据库一起工作,它不应该最终调用请求帮助程序releaseHelper()。如果您有后台任务,那么他们应该获取助手并持有它直到任务完成。

于 2013-12-19T20:08:28.357 回答