【问题标题】:Get Cursor finalized without prior close() message even if I use ContentProvider即使我使用 ContentProvider,也无需事先关闭()消息即可完成游标
【发布时间】:2012-12-07 10:59:13
【问题描述】:

我使用ContentProvider,但有时我会收到标题中写的信息。是什么原因?我读到如果我在关闭游标之前关闭数据库,则会出现此消息。我还读到如果我使用 ContentProvider ,我不应该关闭光标

链接:Closing the database in a ContentProvider

【问题讨论】:

    标签: database cursor android-contentprovider


    【解决方案1】:

    使用 ContentProvider 时确实不必关闭数据库,但这不适用于游标。您必须使用返回游标的getContentResolver().query()。最终你必须用.close() 关闭返回的游标,否则你会得到那个讨厌的消息。

    【讨论】:

      【解决方案2】:

      使用如下代码在严格模式下运行

               StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
                   .detectDiskReads()
                   .detectDiskWrites()
                   .detectNetwork()   // or .detectAll() for all detectable problems
                   .penaltyLog()
                   .build());
           StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
                   .detectLeakedSqlLiteObjects()
                   .detectLeakedClosableObjects()
                   .penaltyLog()
                   .penaltyDeath()
                   .build());
      

      这开始产生可关闭的东西等。因此有助于调试错误产生的位置。

      来源:https://developer.android.com/reference/android/os/StrictMode.html

      【讨论】:

        猜你喜欢
        • 2022-11-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-08
        • 2017-07-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多