【问题标题】:Android Studio Database Inspector always showing database as "closed"Android Studio Database Inspector 始终将数据库显示为“已关闭”
【发布时间】:2020-11-29 08:37:22
【问题描述】:

我正在尝试在 Android Studio 中使用 Database Inspector。为什么我在设备上运行应用程序,它检查器总是将我的应用程序数据库(在图像中突出显示)显示为“关闭”。

是否有任何解决方法或者我在设置过程中遗漏了什么?

【问题讨论】:

标签: android android-studio android-room database-inspector


【解决方案1】:

UPD。上次我遇到这个烦人的问题Invalidate cache/Restart 为我解决了这个问题。 叹息

在调试模式 (Win:Shift+F9 或 Mac:Control+D)下运行应用程序有时对我来说很神奇。

不确定这是否是错误。 The android documentation 没有提到这一点,所以我想它应该只能在正常模式下工作,但由于某种原因不适合我..

我使用(Android Studio 4.2 beta 3)。属性 minSdkVersion 设置为 27。

我不使用 Room 或任何其他 ORM,只是一些简单的查询。

切换“保持数据库连接打开”似乎也没有帮助。

正常模式下:

在调试模式下(我想要的):

值得注意的是,即使我停止了在调试模式下运行的应用程序,它仍然可以继续工作(查询数据库等):

【讨论】:

  • 这对我有用
  • 我尝试了上述步骤,但没有奏效。我清除了应用缓存和数据并重新启动了应用,它开始工作了。
【解决方案2】:

我遇到了同样的问题,我尝试了很多东西但没有奏效,最后一天后我才知道这个问题。 问题是我使用的是加密的 SQLite 数据库(自定义 openHelperFactory)。

对我来说,这是删除 openHelperFactory

后的问题

它工作得很好,我的回答可能对你没有用,但它肯定对某人有用。

谢谢

【讨论】:

    【解决方案3】:

    对我来说,“关闭”的原因很可能是 - 我使用的框架 (Exposed/SQLDroid) 在数据库连接不工作时会关闭它。

    因此,即使应用程序中一切正常,数据库在数据库检查器想要查看它的时候也已关闭。

    添加下面的行基本上解决了这个问题。我不会把它放到生产代码中,因为我没有详细检查发生了什么,但它在开发过程中有所帮助。

    val db = openOrCreateDatabase("testdb.db", MODE_PRIVATE, null)
    // db.close() -- DO NOT USE THIS
    

    重要的是不要使用db.close()。当db.close() 存在时,Database Inspector 将数据库显示为已关闭。当它不存在时,Database Inspector 通常可以工作。

    【讨论】:

      【解决方案4】:

      就我而言,我使用的是 SQLite 数据库。 我刚刚评论了这一行:

      //yourDatabaseName.close();

      然后再次运行,希望它有效。

      完成后不要忘记取消注释。

      【讨论】:

        【解决方案5】:

        启用“保持数据库连接打开”。见下图

        【讨论】:

          【解决方案6】:

          不确定这是否会有所帮助,但您可能为数据库检查器选择了错误的模拟器/设备。

          您可以通过单击模拟器的名称来更改数据库检查器的模拟器,如图所示。

          【讨论】:

            【解决方案7】:

            我没有很好的答案,但这里有一些其他可能的方法:

            从您的屏幕截图中,我看到您已经完成了这项工作,但对其他人来说......听起来this 是您应该能够完成这项工作的方式 -

            此外,您可以通过以下方式阻止数据库连接关闭 将保持数据库连接从 off () 切换到 on () 在 数据库窗格的顶部。

            ...但这对我不起作用,所以我最终转到设备文件资源管理器,将我感兴趣的数据库保存到我的桌面,然后在那里使用它。

            我也很幸运地使用了这个工具: https://github.com/amitshekhariitbhu/Android-Debug-Database

            【讨论】:

              【解决方案8】:

              更新 Room 版本(当前为 2.2.6)对我有用,但发行说明中没有提到任何此类错误。我怀疑它可能与缓存有关,所以也许这也值得尝试

              【讨论】:

                【解决方案9】:

                实际上调试模式对我不起作用。

                它最初是有效的。突然,在一些成功的构建之后,这个问题又来了。所以我要做的是停止检查并打开您实际查询数据库的页面,然后从应用检查中附加,它显示数据库一直打开。

                【讨论】:

                  【解决方案10】:

                  在我运行带有调试器实例的应用程序并在应用程序加载到模拟器后立即终止应用程序之前,没有任何已发布的解决方案对我有用。

                  之后,导航到 Database Inspector 视图会显示必要的数据:

                  【讨论】:

                    猜你喜欢
                    • 2021-12-06
                    • 2020-09-18
                    • 1970-01-01
                    • 2011-10-29
                    • 2012-09-07
                    • 2014-09-10
                    • 2015-08-22
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多