为什么StrictMode不会捕获SQLite的读/写操作?

时间:2016-06-29 10:42:32

标签: android sqlite android-strictmode

在我的应用程序中,我对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中看到了以下内容:

  

值得注意的是,来自JNI呼叫的磁盘或网络访问不一定会触发它。

这是原因吗?

1 个答案:

答案 0 :(得分:3)

SQLite是一个用C编写的库,因此对数据库文件的所有访问都隐藏在JNI调用中。