Android如何监测DB的cursor没关

今天程序在跑MonkeyTest的时候发生异常

android.database.CursorWindowAllocationException: Cursor window allocation of 2048 kb failed. # Open Cursors=311 (# cursors opened by this proc=311)

从日志可以看出来程序有误有311个cursor使用后没有关闭导致内阻不足引发的crash
然后在程序入口加入了代码

StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
                    .detectLeakedSqlLiteObjects()
                    .detectLeakedClosableObjects()
                    .penaltyLog()
                    .penaltyDeath()
                    .build());

它会检测继承了closeable和数据库引用对象,如果对象失去引用未关闭则会抛出crash
这样可以轻松定位未关闭cursor的地方

你可能感兴趣的:(Android如何监测DB的cursor没关)