我使用OrmLite,我希望在不扩展OrmLiteBaseActivity的类中获取辅助类(然后获取dao类)。
我阅读了using with Android上的文档,然后查看了他们的no base class example。
由于我的班级不是活动:
它不是一个Context,所以OpenHelperManager.getHelper无法工作。
我知道我可以使用应用程序从应用程序的每个部分获取上下文,但有更好的方法吗?
它没有要覆盖的onDestroy。
我可以将逻辑放在我的函数末尾:
if (databaseHelper != null) {
OpenHelperManager.releaseHelper();
databaseHelper = null;
}
但如果我的班级变得更复杂,那么这种好行为是什么?
问候。
答案 0 :(得分:1)
一般的经验法则是,您应该创建一个辅助对象,然后在程序的所有部分完成后释放它。这意味着如果您有使用帮助程序的不同线程,则需要保留某种使用计数器 - 可能使用AtomicInteger
。当每个类要求帮助程序时,第一次创建它,但每次之后计数器都会增加。当他们完成帮助时,他们减少了计数器。当计数器变为0时,您将其从OpenHelperManager
释放。
它不是Context,因此OpenHelperManager.getHelper无法工作。
你需要以某种方式得到Context
。只要它有效,使用该应用程序应该没问题。
它没有onDestroy来覆盖
但的部分程序有onDestroy
。您将不得不从做具有onDestroy
的地方应用应用程序的其他部分 - 可能是通过调用静态destroy()
方法。
但如果我的班级变得更复杂,那么这种好行为是什么?
即使是复杂的应用程序,我也没有看到上述任何问题。如果你想设置一个寄存器/取消注册类型的配置,那么你的类构造就会注册一些中心类,然后在最后关闭它们。
希望其中一些有用。