0

我使用 OrmLite,我想在一个不扩展 OrmLiteBaseActivity 的类中获取帮助类(然后获取一个 dao 类)。

我阅读了有关使用 Android的文档,并查看了他们的无基类示例

因为我的课不是 Activity :

  1. 它不是上下文,因此 OpenHelperManager.getHelper 无法工作。

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

  2. 它没有要覆盖的 onDestroy 。

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

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

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

问候。

4

1 回答 1

1

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

它不是上下文,因此 OpenHelperManager.getHelper 无法工作。

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

它没有要覆盖的 onDestroy

但是你的程序的一部分确实onDestroy. 您将不得不从已有的地方应用应用程序的其他部分——也许onDestroy通过调用静态destroy()方法。

但是,如果我的课程变得更复杂,那么好的行为是什么?

即使使用复杂的应用程序,我也没有看到上述任何问题。如果您想设置一个注册/注销类型的配置,以便您的类构造它们向某个中心类注册,然后在最后将它们关闭。

希望有些帮助。

于 2012-06-12T12:30:15.393 回答