即使我使用ContentProvider,也可以在没有事先close()消息的情况下获取Cursor

时间:2012-12-07 10:59:13

标签: database cursor android-contentprovider

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

,我不应该关闭光标

链接:Closing the database in a ContentProvider

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:0)

使用以下代码以严格模式运行

         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