什么是追踪SqLite开放光标泄漏的最佳方法?

Mua*_*hai 2 performance android android-studio

在大型android代码块的某处是打开游标泄漏.超过800个游标打开.有谁知道最好的方法来确定这一点?有什么方法可以查询如何使用游标?或者通过配置文件工具查看它发生在哪里?怎么会这样做?大代码块不想更改大量代码来解决这个问题.我没有看到任何地方检查SQLiteDatabase类上的打开游标数.

e4c*_*4c5 8

在onCreate方法中尝试这个

StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
                 .detectLeakedSqlLiteObjects()
                 .detectLeakedClosableObjects()
                 .penaltyLog()
                 .penaltyDeath()
                 .build());
Run Code Online (Sandbox Code Playgroud)

当光标泄漏时,应用程序将与堆栈跟踪崩溃:-)

StrictMode是一个开发人员工具,可以检测您可能偶然发生的事情,并引起您的注意,以便您可以修复它们

http://developer.android.com/reference/android/os/StrictMode.html