gpt4 book ai didi

java - 在不扩展 OrmLiteBaseActivity 或 Activity 的每个类中使用 OrmLite

转载 作者:行者123 更新时间:2023-12-01 15:20:30 25 4
gpt4 key购买 nike

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

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

因为我的类(class)不是 Activity :

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

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

  2. 它没有要重写的 onDestroy。

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

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

    但是如果我的类变得更加复杂,什么是好的行为?

问候。

最佳答案

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

it isn't a Context, so OpenHelperManager.getHelper can't work.

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

it doesn't have a onDestroy to override

但是你的程序的一部分确实onDestroy。您将必须从具有 onDestroy 的地方应用应用程序的其他部分 - 可能通过调用静态 destroy() > 方法。

But if my class become more complex, what is the good behaviour?

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

希望其中一些有所帮助。

关于java - 在不扩展 OrmLiteBaseActivity 或 Activity 的每个类中使用 OrmLite,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10992973/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com