3

私のアプリでは、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 でテストしましたが、結果は同じでした。StrictMode 違反をトリガーするために SQLite 操作を使用していた記憶がありますが、現在はそうではありません。理由はありますか?

ドキュメントで次のことを見ました。

特に、JNI 呼び出しからのディスクまたはネットワークへのアクセスが、必ずしもそれをトリガーするとは限りません。

それが理由ですか?

4

1 に答える 1

3

SQLite は C で記述されたライブラリであるため、データベース ファイルへのアクセスはすべて JNI 呼び出し内に隠されています。

于 2016-06-29T11:52:45.750 に答える