2016-06-29 6 views
3

私はStrictModeための次の設定があります。私はSQLiteの操作が別のスレッドに配置されていないが、それにもかかわらず、彼らはStrictMode違反をトリガしていないいくつかの場所を持っていることに気付きましたいくつかの点でStrictModeがSQLiteによる読み書き操作を捕まえないのはなぜですか?私のアプリで

StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder() 
      .detectDiskReads() 
      .detectDiskWrites() 
      .detectNetwork() 
      .penaltyLog() 
      .penaltyDeath() 
      .build()); 

を。 私は、Android 5.1.1と4.4.4と5.1.1のGenymotionsで同じ結果を実デバイス上でテストしました。 私はSQLite操作がStrictMode違反を引き起こすのに使われたが、今はそうではないという想いがあります。どんな考え?

私はdocumentationに次のように見た:

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

その理由はありますか?

答えて

3

SQLiteはC言語で書かれたライブラリなので、データベースファイルへのアクセスはすべてJNI呼び出しの中で隠されています。

+0

です。しかし、その後、StrictModeをトリガーしていたという説明は何ですか(この質問のように、http://stackoverflow.com/questions/11963601/android-strictmode-policy)? – Ognyan

+0

スタックトレースに示されているように、 'SQLiteDatabase'の実装では明示的な厳密なモードチェックが追加されました。これはおそらく、すべてのSQL文が必ずディスクにアクセスするわけではないため、削除さ –

関連する問題