今天程序在跑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
的地方