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

标签 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 中看到以下内容:

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

是这个原因吗?

最佳答案

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

关于android - 为什么 StrictMode 不捕获 SQLite 的读/写操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38097247/

相关文章:

android - 我的 Activity 如何在 Android 中使用大量高质量图像顺利运行?

java - Volley API 是线程安全的吗?

select - sqlite3 从多个表中选择 'where' 东西

python - Python/Django 上的 Sqlite 问题

python - Django for循环显示数据库中的所有对象

android - 在 TextView 中使用电话号码时违反 StrictMode

android - 如何从不受支持的国家/地区出售付费应用程序

android - 如何获取 Android 的传感器值

android - Gingerbread 模拟器实例比 Froyo 及以下版本更慢。为什么?

android - StrictModeBuilder permitAll 不工作