Database 即使我使用ContentProvider,也可以在没有之前的close()消息的情况下完成游标

Database 即使我使用ContentProvider,也可以在没有之前的close()消息的情况下完成游标,database,cursor,android-contentprovider,Database,Cursor,Android Contentprovider,我使用ContentProvider,但有时我会在标题中看到消息。原因是什么?我读到,如果在关闭光标之前关闭数据库,则会出现此消息。我还读到,如果我使用ContentProvider 链接:使用ContentProvider时确实不必关闭数据库,但这不适用于游标。必须使用返回光标的getContentResolver().query()。最终,您必须使用.close()关闭返回的游标,否则您将收到令人讨厌的消息。使用如下代码在严格模式下运行 StrictMode.setThre

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


链接:

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

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

         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());
这将开始产生可关闭的东西等,因此有助于调试错误产生的地方

资料来源: