Android如何监测DB的cursor没关

作者: 碎念枫子 | 来源:发表于2018-12-14 17:15 被阅读10次

    今天程序在跑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没关

      本文链接:https://www.haomeiwen.com/subject/owwghqtx.html