为何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