在每个不使用OrmLiteBaseActivity或Activity的类中使用OrmLite

时间:2012-06-12 08:27:11

标签: java android ormlite

我使用OrmLite,我希望在不扩展OrmLiteBaseActivity的类中获取辅助类(然后获取dao类)。

我阅读了using with Android上的文档,然后查看了他们的no base class example

由于我的班级不是活动:

  1. 它不是一个Context,所以OpenHelperManager.getHelper无法工作。

    我知道我可以使用应用程序从应用程序的每个部分获取上下文,但有更好的方法吗?

  2. 它没有要覆盖的onDestroy。

    我可以将逻辑放在我的函数末尾:

    if (databaseHelper != null) {
        OpenHelperManager.releaseHelper();
        databaseHelper = null;
    }
    

    但如果我的班级变得更复杂,那么这种好行为是什么?

  3. 问候。

1 个答案:

答案 0 :(得分:1)

一般的经验法则是,您应该创建一个辅助对象,然后在程序的所有部分完成后释放它。这意味着如果您有使用帮助程序的不同线程,则需要保留某种使用计数器 - 可能使用AtomicInteger。当每个类要求帮助程序时,第一次创建它,但每次之后计数器都会增加。当他们完成帮助时,他们减少了计数器。当计数器变为0时,您将其从OpenHelperManager释放。

  

它不是Context,因此OpenHelperManager.getHelper无法工作。

你需要以某种方式得到Context。只要它有效,使用该应用程序应该没问题。

  

它没有onDestroy来覆盖

的部分程序onDestroy。您将不得不从具有onDestroy的地方应用应用程序的其他部分 - 可能是通过调用静态destroy()方法。

  

但如果我的班级变得更复杂,那么这种好行为是什么?

即使是复杂的应用程序,我也没有看到上述任何问题。如果你想设置一个寄存器/取消注册类型的配置,那么你的类构造就会注册一些中心类,然后在最后关闭它们。

希望其中一些有用。