当前位置:首页 > 数据库 > SQlite

为何StrictMode无法捕获SQLite的读/写操作?

在我的应用中,我为StrictMode设置了以下设置:

    StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
            .detectDiskReads()
            .detectDiskWrites()
            .detectNetwork()
            .penaltyLog()
            .penaltyDeath()
            .build());

在某个时候,我注意到我很少有地方不将SQLite操作放在单独的线程中,但是它们不会触发StrictMode违例.
我已经在具有Android 5.1.1的真实设备上以及在4.4.4和5.1.1的Genymotions上进行了测试,结果相同.
我回想起SQLite操作曾经触发StrictMode违规,但是现在不是这种情况了.知道为什么吗?

我在documentation中看到以下内容:

Notably, disk or network access from JNI calls won’t necessarily trigger it.

那是原因吗?

解决方法:

SQLite是用C编写的库,因此对数据库文件的所有访问确实隐藏在JNI调用中.


【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!