在我的应用程序中,我对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呼叫的磁盘或网络访问不一定会触发它。
这是原因吗?
答案 0 :(得分:3)
SQLite是一个用C编写的库,因此对数据库文件的所有访问都隐藏在JNI调用中。