【发布时间】:2012-12-07 10:59:13
【问题描述】:
我使用ContentProvider,但有时我会收到标题中写的信息。是什么原因?我读到如果我在关闭游标之前关闭数据库,则会出现此消息。我还读到如果我使用 ContentProvider ,我不应该关闭光标
【问题讨论】:
标签: database cursor android-contentprovider
我使用ContentProvider,但有时我会收到标题中写的信息。是什么原因?我读到如果我在关闭游标之前关闭数据库,则会出现此消息。我还读到如果我使用 ContentProvider ,我不应该关闭光标
【问题讨论】:
标签: database cursor android-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());
这开始产生可关闭的东西等。因此有助于调试错误产生的位置。
来源:https://developer.android.com/reference/android/os/StrictMode.html
【讨论】: