数据库
首页 > 数据库> > 为何StrictMode无法捕获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调用中.

标签:sqlite,android-strictmode,android
来源: https://codeday.me/bug/20191118/2028436.html