gpt4 book ai didi

sqliteopenhelper - 在 Activity Context 或 Application Context 之间决定实例化 SQLiteOpenHelper

转载 作者:行者123 更新时间:2023-12-04 08:33:39 25 4
gpt4 key购买 nike

我是 Android 开发的新手(坦率地说是整体开发),因此我一直在阅读 Commonsware Busy Coder 的指南。在阅读 SQLite 部分时,有几件事对我来说不是 %100 清楚。以下是我认为正在发生的事情以及一些问题。如果我的思考过程有误,请纠正我。

作者建议,如果您打算在应用程序中使用来自多个 Activity 的数据库,则不应使用来自每个 Activity 的 Context 引用来实例化 SQLiteOpenHelper .相反,您应该使用 getApplicationContext()由事件提供。

通过这样做,他利用了 getApplicationContext() 的事实。检索在应用程序进程开始后不久创建的 Context 的单例实例。这就是我的问题出现的地方。我认为,如果我在实例化 时使用 Activity(this 关键字)提供的 Context SQLiteOpenHelper , 每个 Activity 都会创建自己的 实例SQLiteOpenHelper .在我看来,仅使用 Activity 的上下文并不会通知应用程序上下文已经创建了 SQLiteHelper 的一个实例,因此,它会创建一个新实例,而不是重新使用现有实例。我的想法正确吗?

我认为 Context(如果我错了,请纠正我)作为开发人员获取 Android 操作系统提供的信息和资源的“网关”(即通过 getSystemService() 获取系统服务)。但是使用它(来自事件)或使用 getApplicationContext() 这样做有不同的含义。使用它,将获得一个 Context 实例,它是您当前事件的“本地”实例,但使用 getApplicationContext()引用整个应用程序。如果这是正确的,这是否意味着当我传递对 getApplicationContext() 的引用时?到 SQLiteOpenHelper 的 构造函数它会让我的整个应用程序知道有一个我的实例 SQLiteOpenHelper 已经创建。怎么样 SQLiteOpenHelper 让应用程序知道这一点?它是否使用一些静态方法,如 public/private static dbCreated(Context context){//let context know there is an instance of this running} 让应用程序知道?

如果这令人困惑,我很抱歉。

提前致谢

最佳答案

我认为现在我对 Context 的概念有了更好的理解。我想分享一个我发现的澄清这个主题的链接。 http://t.co/9R0bPWiKc5

关于sqliteopenhelper - 在 Activity Context 或 Application Context 之间决定实例化 SQLiteOpenHelper,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15328424/

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