根据建议,我正在使用单例获取帮助程序(我确保它首先在我的应用程序的onCreate()上创建,使用应用程序上下文)。
然后使用来自不同[Intent]服务的帮助程序,但我对发布感到困惑:我已经阅读了这个related question,但是关于releaseHelper()
的ormlite文档似乎是矛盾的:
警告:当您的应用程序或服务终止时,或者您的代码不再以任何方式使用帮助程序或派生的DAO时,应在onDestroy()类型的方法中调用此方法。 如果您希望在应用程序终止之前再次调用{@link #getHelper(Context)},请调用此方法。
上面警告的第二部分是告诉不要调用releaseHelper()如果我们期望在应用程序终止之前再次调用getHelper(),这很可能是在另一个服务被激活之前的情况。应用程序的进程终止了!
此外,根据this post,在Android上不释放帮助声音安全。
我误解了吗?
答案 0 :(得分:2)
我必须同意这个混乱。
http://ormlite.com/javadoc/ormlite-core/doc-files/ormlite_4.html#Use-With-Android声明在每个Activity / Fragment的onDestroy()上调用OpenHelperManager.releaseHelper(),但是对releaseHelper()的警告注释明确告诉你只在应用程序时使用它终止。
也许releaseHelper()注释中的警告不再相关?由于他离开项目后的变化,Kevin Galligan's warning post也不再相关了吗?
答案 1 :(得分:1)
我误解了吗?
不确定您是否理解。
数据库关闭后,即应用程序的最后一部分释放DatabaseHelper
时,无法重新打开数据库。警告只是为了确保如果某个后台任务与数据库一起工作,那么在对releaseHelper()
的最终调用之后不要求帮助者已经成型。如果你有后台任务,那么他们应该得到帮助并保持它直到任务完成。